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 相关文章推荐
15种PHP Encoder的比较
Apr 17 PHP
php 小乘法表实现代码
Jul 16 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
Jun 18 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
Jun 30 PHP
php无法连接mysql数据库的正确解决方法
Jul 01 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
Jul 25 PHP
php生成二维码图片方法汇总
Dec 17 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
Laravel 实现添加多语言提示信息
Oct 25 PHP
phpcmsv9.0任意文件上传漏洞解析
Oct 20 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 编写的 25个游戏脚本
2009/05/11 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
bootstrap table小案例
2016/10/21 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
Node.js简单入门前传
2017/08/21 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
Python中input和raw_input的一点区别
2014/10/21 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Java分治归并排序算法实例详解
2017/12/12 Python
Python WSGI的深入理解
2018/08/01 Python
Windows下安装Scrapy
2018/10/17 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
python openpyxl模块的使用详解
2021/02/25 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
党员干部承诺书
2014/03/25 职场文书
批评与自我批评总结
2014/10/17 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
拿破仑传读书笔记
2015/07/01 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL