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 相关文章推荐
Mysql数据库操作类( 1127版,提供源码下载 )
Dec 02 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 PHP
php的zip解压缩类pclzip使用示例
Mar 14 PHP
基于PHP的简单采集数据入库程序【续篇】
Jul 30 PHP
浅谈PDO的rowCount函数
Jun 18 PHP
优化WordPress的Google字体以加速国内服务器上的运行
Nov 24 PHP
zend framework重定向方法小结
May 28 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
php实现查询功能(数据访问)
May 23 PHP
PHP7新功能总结
Apr 14 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
php防盗链的常用方法小结
2010/07/02 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
超清晰的document对象详解
2007/02/27 Javascript
javascript 得到变量类型的函数
2010/05/19 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
在Python程序中实现分布式进程的教程
2015/04/28 Python
Python KMeans聚类问题分析
2018/02/23 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
wxPython实现文本框基础组件
2019/11/18 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
医院后勤自我鉴定
2013/10/13 职场文书
用python自动生成日历
2021/04/24 Python
正确使用MySQL update语句
2021/05/26 MySQL
详解JAVA的控制语句
2021/11/11 Java/Android
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js