原文:http://www.cnblogs.com/goody9807/p/4244862.html

本文讲解2点:

1. fastjson生成和解析json数据

(举例:4种常用类型:JavaBean,List,List,List)

2.通过一个android程序测试fastjson的用法。

fastjson简介:

Fastjson是一个Java语言编写的高性能功能完善的JSON库。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持JDK 5、JDK 6、Android、阿里云手机等环境。

一. fastjson生成json字符串(JavaBean,List,List,List)

String jsonStrng = JSON.toJSONString(object);

二. fastjson 解析json字符串为四种类型

1. JavaBean

Person person = JSON.parseObject(jsonString, Person.class);

2. List

List listPerson =JSON.parseArray(jsonString, Person.class);

3. List

List listString = JSON.parseArray(jsonString, String.class);

4. List>

List> listMap = JSON.parseObject(jsonString, new TypeReference>>(){});  (注意:此处可看出fastjson反射机制比gson更准确, id = 1001 通过fastjson反射仍是 id = 1001 , 而通过gson反射结果 为 id =1001.0 ,

JSON解析器fastjson(阿里巴巴出品,版本1.1.26),如果定义了JSONObject为{“JACKIE_ZHANG”:”张学友”,”ANDY_LAU”:”刘德华”,”LIMING”:”黎明”,”Aaron_Kwok”:”郭富城”},那么读取值时,KEY顺序无序,测试代码:

import com.alibaba.fastjson.JSONObject;

/**

* Created by wangzhenfei on 14-4-15.

*/

public class FastJsonTest {

public static void main(String[] args){

String jsonStr = “{\”JACKIE_ZHANG\”:\”张学友\”,\”ANDY_LAU\”:\”刘德华\”,\”LIMING\”:\”黎明\”,\”Aaron_Kwok\”:\”郭富城\”}” ;

//做5次测试

for(int i=0,j=5;i

{

JSONObject jsonObject = JSONObject.parseObject(jsonStr) ;

for(java.util.Map.Entry entry:jsonObject.entrySet()){

System.out.print(entry.getKey()+”-“+entry.getValue()+”\t”);

}

System.out.println();//用来换行

}

}

}

LIMING-黎明 Aaron_Kwok-郭富城JACKIE_ZHANG-张学友ANDY_LAU-刘德华

Aaron_Kwok-郭富城 ANDY_LAU-刘德华LIMING-黎明JACKIE_ZHANG-张学友

Aaron_Kwok-郭富城 JACKIE_ZHANG-张学友ANDY_LAU-刘德华LIMING-黎明

LIMING-黎明 ANDY_LAU-刘德华JACKIE_ZHANG-张学友Aaron_Kwok-郭富城

JACKIE_ZHANG-张学友 LIMING-黎明ANDY_LAU-刘德华Aaron_Kwok-郭富城

解决办法:定义为JSONArray,代码如下:

import com.alibaba.fastjson.JSONArray;

/**

* Created by wangzhenfei on 14-4-15.

*/

public class FastJsonTest {

public static void main(String[] args){

String jsonStr = “[{\”JACKIE_ZHANG\”:\”张学友\”},{\”ANDY_LAU\”:\”刘德华\”},{\”LIMING\”:\”黎明\”},{\”Aaron_Kwok\”:\”郭富城\”}]” ;

//做5次测试

for(int i=0,j=5;i

{

JSONArray jsonArray = JSONArray.parseArray(jsonStr);

for(int k=0;k

System.out.print(jsonArray.get(k) + “\t”);

}

System.out.println();//用来换行

}

}

}

运行结果为:[plain]

{“JACKIE_ZHANG”:”张学友”} {“ANDY_LAU”:”刘德华”}{“LIMING”:”黎明”}{“Aaron_Kwok”:”郭富城”}

{“JACKIE_ZHANG”:”张学友”} {“ANDY_LAU”:”刘德华”}{“LIMING”:”黎明”}{“Aaron_Kwok”:”郭富城”}

{“JACKIE_ZHANG”:”张学友”} {“ANDY_LAU”:”刘德华”}{“LIMING”:”黎明”}{“Aaron_Kwok”:”郭富城”}

{“JACKIE_ZHANG”:”张学友”} {“ANDY_LAU”:”刘德华”}{“LIMING”:”黎明”}{“Aaron_Kwok”:”郭富城”}

{“JACKIE_ZHANG”:”张学友”} {“ANDY_LAU”:”刘德华”}{“LIMING”:”黎明”}{“Aaron_Kwok”:”郭富城”}

如果就想要定义为JSONObject,而不是JSONArray,可以选用其他JSON解析器,个人推荐使用google的gson,文档明显比fastjson好很多(从这里可以看出阿里巴巴和谷歌的差距):[java]

import com.google.gson.JsonElement;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

/**

* Created by wangzhenfei on 14-4-15.

*/

public class FastJsonTest {

public static void main(String[] args){

String jsonStr = “{\”JACKIE_ZHANG\”:\”张学友\”,\”ANDY_LAU\”:\”刘德华\”,\”LIMING\”:\”黎明\”,\”Aaron_Kwok\”:\”郭富城\”}” ;

//做5次测试

for(int i=0,j=5;i

{

JsonObject jsonObject = (JsonObject) new JsonParser().parse(jsonStr);

for(java.util.Map.Entry entry:jsonObject.entrySet()){

System.out.print(entry.getKey()+”-“+entry.getValue()+”\t”);

}

System.out.println();//用来换行

}

}

}

运行结果:[plain]

JACKIE_ZHANG-“张学友”  ANDY_LAU-“刘德华”  LIMING-“黎明” Aaron_Kwok-“郭富城”

JACKIE_ZHANG-“张学友”  ANDY_LAU-“刘德华”  LIMING-“黎明” Aaron_Kwok-“郭富城”

JACKIE_ZHANG-“张学友”  ANDY_LAU-“刘德华”  LIMING-“黎明” Aaron_Kwok-“郭富城”

JACKIE_ZHANG-“张学友”  ANDY_LAU-“刘德华”  LIMING-“黎明” Aaron_Kwok-“郭富城”

JACKIE_ZHANG-“张学友”  ANDY_LAU-“刘德华”  LIMING-“黎明” Aaron_Kwok-“郭富城”

alibaba 实体转json_com.alibaba.fastjson 转换List Map等对象相关推荐

  1. 使用fastjson的parseObject方法将json字符串转换成Map 或者List

    fastjson 转换成map HashMap<String,String> map = JSON.parseObject(jsonStr,new TypeReference<Has ...

  2. alibaba 实体转json_JAVA中使用alibaba fastjson实现JSONObject、Object、Json字符串的转换...

    Object转JSON字符串: String jsonStr = JSONObject.toJSONString(object); JSON字符串转JSONObject: JSONObject jso ...

  3. fastjson转换包含date类型属性的对象时报错com.alibaba.fastjson.JSONException: For input string 解决方法

    fastjson转换包含date类型属性的对象时报错com.alibaba.fastjson.JSONException: For input string 解决方法 pojo里面的date属性上要加 ...

  4. fastjson转换json字符串key的首字母小写变大写的解决办法

    问题描述 在开发过程中,由于接口文档的描述,要求json字符串的key首字母为大写,而java 的规范要求在定义bean的时候,成员属性是首字母小写的驼峰格式,java的基本规范一定要遵守,否则会出现 ...

  5. fastjson判空_fastjson JSON 对象为空保留null

    fastjson,对象转json字符串的过程中对value为null的值的一些处理 前言 fastjson是一个非常好用的java库,用于操作对象json序列化等等. 问题 最近在写代码的时候遇到问题 ...

  6. java pojo 转 map_如何将POJO对象转换成MAP

    展开全部 很多情况需要将取得的POJO对象转换成其他表现形式,如Key-Value的Map形式,用于数据展现.本文介绍如何e5a48de588b662616964757a686964616f31333 ...

  7. 使用Python,OpenCV转换颜色空间,追踪对象的轨迹

    使用Python,OpenCV转换颜色空间,追踪对象的轨迹 1. 效果图 2. 源码 参考 这篇博客可以看作是之前俩篇博客的融合,将介绍如何使用Python,OpenCV转换颜色空间,并利用HSV追踪 ...

  8. 把json对象串转换成map对象

    2019独角兽企业重金招聘Python工程师标准>>> /**    * nc只支持简单的   * 把json对象串转换成map对象    * @param jsonObjStr e ...

  9. golang 开发 Struct 转换成 map 两种方式比较

    原文链接:https://www.jianshu.com/p/81c4304f6d1b 最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接 ...

最新文章

  1. 记事本写python怎么运行-从头学Python之编写可执行的.py文件
  2. php xml 互相转换
  3. 如何优雅的处理业务逻辑中的定时和延时问题?
  4. python-css反爬之svg映射
  5. 聚合登录平台网站源码 PHP聚合登录源码
  6. mysql连接查询on_MySql 连接查询中 on 和 where 的区别
  7. 应用密码学的笑话之MD5+Salt不安全
  8. js判断对象为空_在 JavaScript 中如何检查对象为空
  9. 在Linux下查看系统版本信息命令总结
  10. 16. Window close() 方法
  11. mysql表添加字段_怎么给mysql数据表添加字段
  12. Stream Processing With Flink (7) 状态算子和用户函数
  13. 此计算机缺少vc2005_spl_with_atl_fix_redist解决问题
  14. 计算机毕业设计——选题参考
  15. 红外图像的特征提取 matab
  16. ei拼音的四个声调对应的字_幼儿园学前班拼音教案复习ei以及四声调
  17. python+selenium 定位元素踩过的坑
  18. 二分查找及时间复杂度
  19. java midi版本_java-为特定MIDI设备开发软件
  20. # 后端开发技巧、常用规范

热门文章

  1. 运维编排场景系列----给实例加到SLS机器组
  2. 亿级消息系统的核心存储:Tablestore发布Timeline 2.0模型
  3. 内含福利|CSDN携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!
  4. 你想知道的容器混合云问题,答案都在这里!
  5. ZooKeeper的十二连问,你顶得了嘛?
  6. 我是如何用6个月,从0编程经验变成数据科学家的?
  7. 亚信科技高念书:“一巩固三发展”五年打造百亿企业
  8. OpenStack网络的下一步原来这么走 | 技术头条
  9. springboot Java实现多文件的zip压缩操作 + 通过浏览器下载文件的两种方式
  10. Springboot整合Quartz集群部署以及配置Druid数据源