java解析json方法总结


Posted in PHP onMay 16, 2019

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

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

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

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());

    }

     

  }

 

}
PHP 相关文章推荐
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
php线性表顺序存储实现代码(增删查改)
Feb 16 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
Yii实现多按钮保存与提交的方法
Dec 03 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
Dec 29 PHP
利用php生成验证码
Feb 23 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
PHP+Ajax实现的检测用户名功能简单示例
Feb 12 PHP
PHP实现字母数字混合验证码功能
Jul 11 PHP
phpquery中文手册
Mar 18 PHP
微信支付之JSAPI公众号支付详解
May 15 #PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 #PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 #PHP
yii2的restful api路由实例详解
May 14 #PHP
php的扩展写法总结
May 14 #PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 #PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
May 13 #PHP
You might like
星际初学者游戏中永远要做的事
2020/03/04 星际争霸
深入Nginx + PHP 缓存详解
2013/07/11 PHP
php时间戳转换的示例
2014/03/31 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
jQuery移动端图片上传组件
2016/06/12 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
React 高阶组件入门介绍
2018/01/11 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
Python 学习教程之networkx
2019/04/15 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
计算机专业毕业生的自我评价
2013/11/18 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
学前班语言教学计划
2015/01/20 职场文书
学校实习推荐信
2015/03/27 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
被告答辩状范文
2015/05/22 职场文书
导游词之上饶龟峰
2019/10/25 职场文书
Java设计模式中的命令模式
2022/04/28 Java/Android