欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java解析json方法总结

程序员文章站 2022-07-22 10:31:50
工具包org.json.jar,是一个轻量级的,java下的json构造和解析工具包,它还包含json与xml, http headers, cookies, cdl的转换...

工具包org.json.jar,是一个轻量级的,java下的json构造和解析工具包,它还包含json与xml, http headers, cookies, cdl的转换。

这里推荐使用:阿里巴巴fastjson是一个json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:

速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。包括自称最快的jackjson;

功能强大,完全支持java bean、集合、map、日期、enum,支持范型,支持自省;无依赖,能够直接运行在java se 5.0以上版本;支持android;开源 (apache 2.0)

源码地址:

fastjson api入口类是com.alibaba.fastjson.json,常用的序列化操作都可以在json类上的静态方法直接完成。

public static final object parse(string text); // 把json文本parse为jsonobject或者jsonarray
public static final jsonobject parseobject(string text); // 把json文本parse成jsonobject
public static final t parseobject(string text, class clazz); // 把json文本parse为javabean
public static final jsonarray parsearray(string text); // 把json文本parse成jsonarray
public static final list parsearray(string text, class clazz); //把json文本parse成javabean集合
public static final string tojsonstring(object object); // 将javabean序列化为json文本
public static final string tojsonstring(object object, boolean prettyformat); // 将javabean序列化为带格式的json文本
public static final object tojson(object javaobject); 将javabean转换为jsonobject或者jsonarray。

以上都是一些项目中的常用方法。

以下是自己练习写的代码:

package com.test;

 

public class testperson {

  private int age;

  private string name;

   

  public testperson(){

     

  }

   

  public testperson(int age,string name){

    this.age=age;

    this.name=name;

  }

   

  public int getage() {

    return age;

  }

  public void setage(int age) {

    this.age = age;

  }

  public string getname() {

    return name;

  }

  public void setname(string name) {

    this.name = name;

  }

}

 

 

 

package com.test;

import java.util.*;

 

import com.alibaba.fastjson.*;

 

public final class testfastjson {

 

  public static void main(string[] args) {

    // todo auto-generated method stub

     

    testperson json = new testperson(19,"李明");

    list<testperson> list = new arraylist<testperson>();

    list.add(json);

    list.add(new testperson(12,"张三"));

    //将集合或者对象序例化成json

    system.out.println(json.tojson(json));

    system.out.println( json.tojson(list) );

    //json串反序列化成对象

    testperson person = json.parseobject("{\"name\":\"李明\",\"age\":19}", testperson.class);

    system.out.printf("name:%s,age:%d\n",person.getname(),person.getage());

     

    string str = "[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]";

    //数组对象反序列化成集合

    list<testperson> listperson = json.parsearray(str,testperson.class);

     

    for(testperson item : listperson){

      system.out.println( item.getname() );

      system.out.println( item.getage());

    }

     

    //没有对象直接解析json对象

    jsonobject jobj = json.parseobject("{\"name\":\"李明\",\"age\":19}");

    system.out.printf("name:%s,age:%d\n",jobj.getstring("name"),jobj.getbiginteger("age"));

     

    //没有对象直接解析json数组

    jsonarray jarr = json.parsearray("[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]");

     

    for(int i=0,len=jarr.size();i<len;i++){

      jsonobject temp= jarr.getjsonobject(i);

      system.out.printf("name:%s,age:%d\n",temp.getstring("name"),temp.getbiginteger("age"));

    }

     

    for(object obj:jarr){

      system.out.println(obj.tostring());

    }

     

  }

 

}