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下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
Jun 05 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
PHP 输出URL的快捷方式示例代码
Sep 22 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
Yii2 rbac权限控制之菜单menu实例教程
Apr 28 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
PHP安全之register_globals的on和off的区别
Jul 23 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
其他功能
2006/10/09 PHP
解析php 版获取重定向后的地址(代码)
2013/06/26 PHP
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
jquery遍历input取得input的name
2009/04/27 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
js实现select下拉框选择
2020/01/11 Javascript
python中使用mysql数据库详细介绍
2015/03/27 Python
python实现根据月份和日期得到星座的方法
2015/03/27 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
python unittest实现api自动化测试
2018/04/04 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
wxpython绘制圆角窗体
2019/11/18 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
小学教师岗位职责
2013/11/25 职场文书
应届毕业生求职信范文分享
2013/12/26 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
领导接待方案
2014/03/13 职场文书
护士长竞聘书
2014/03/31 职场文书
庆六一活动总结
2014/08/29 职场文书
升国旗演讲稿
2014/09/05 职场文书
大学生求职自荐信
2015/03/24 职场文书
入党自传范文2015
2015/06/26 职场文书
浅谈Redis中的RDB快照
2021/06/29 Redis