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 array_search() 函数使用
Apr 13 PHP
优化php效率,提高php性能的一些方法
Mar 24 PHP
PHP中函数rand和mt_rand的区别比较
Dec 26 PHP
php数据类型判断函数有哪些
Sep 23 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
在win7中搭建Linux+PHP 开发环境
Oct 08 PHP
PHP实现链式操作的核心思想
Jun 23 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
Sep 22 PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
PHP使用标准库spl实现的观察者模式示例
Aug 04 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
PHP4之COOKIE支持详解
2006/10/09 PHP
php框架Phpbean说明
2008/01/10 PHP
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
php适配器模式介绍
2012/08/14 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
详解NODEJS基于FFMPEG视频推流测试
2017/11/17 NodeJs
如何开发出更好的JavaScript模块
2017/12/22 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
SQLite3中文编码 Python的实现
2017/01/11 Python
python 对key为时间的dict排序方法
2018/10/17 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
自我推荐书
2013/12/04 职场文书
爱国演讲稿400字
2014/05/07 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
在职员工证明书
2014/09/19 职场文书
人事主管岗位职责
2015/02/04 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技