java解析json方法总结

在本篇文章中小编给大家总结了关于java解析json方法总结以及相关知识点,需要的朋友们学习下。

工具包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)

源码地址:

https://github.com/alibaba/fastjson

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。

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

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

  1. package com.test;
  2. public class TestPerson {
  3. private int age;
  4. private String name;
  5. public TestPerson(){
  6. }
  7. public TestPerson(int age,String name){
  8. this.age=age;
  9. this.name=name;
  10. }
  11. public int getAge() {
  12. return age;
  13. }
  14. public void setAge(int age) {
  15. this.age = age;
  16. }
  17. public String getName() {
  18. return name;
  19. }
  20. public void setName(String name) {
  21. this.name = name;
  22. }
  23. }
  24. package com.test;
  25. import java.util.*;
  26. import com.alibaba.fastjson.*;
  27. public final class TestFastJson {
  28. public static void main(String[] args) {
  29. // TODO Auto-generated method stub
  30. TestPerson json = new TestPerson(19,"李明");
  31. List<TestPerson> list = new ArrayList<TestPerson>();
  32. list.add(json);
  33. list.add(new TestPerson(12,"张三"));
  34. //将集合或者对象序例化成JSON
  35. System.out.println(JSON.toJSON(json));
  36. System.out.println( JSON.toJSON(list) );
  37. //Json串反序列化成对象
  38. TestPerson person = JSON.parseObject("{\"name\":\"李明\",\"age\":19}", TestPerson.class);
  39. System.out.printf("name:%s,age:%d\n",person.getName(),person.getAge());
  40. String str = "[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]";
  41. //数组对象反序列化成集合
  42. List<TestPerson> listPerson = JSON.parseArray(str,TestPerson.class);
  43. for(TestPerson item : listPerson){
  44. System.out.println( item.getName() );
  45. System.out.println( item.getAge());
  46. }
  47. //没有对象直接解析JSON对象
  48. JSONObject jobj = JSON.parseObject("{\"name\":\"李明\",\"age\":19}");
  49. System.out.printf("name:%s,age:%d\n",jobj.getString("name"),jobj.getBigInteger("age"));
  50. //没有对象直接解析JSON数组
  51. JSONArray jarr = JSON.parseArray("[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]");
  52. for(int i=0,len=jarr.size();i<len;i++){
  53. JSONObject temp= jarr.getJSONObject(i);
  54. System.out.printf("name:%s,age:%d\n",temp.getString("name"),temp.getBigInteger("age"));
  55. }
  56. for(Object obj:jarr){
  57. System.out.println(obj.toString());
  58. }
  59. }
  60. }