自己开发过程中使用gson和fastjson来解析json的一点总结。

一、使用谷歌的gson和阿里巴巴的fastjson都能够很好地实现json和java对象的互相转换,只是所引用的jar库不同,具体使用方法也不同。

  (1)gson需要引用google的的jar,比如gson-2.3.jar(http://maven.outofmemory.cn/com.google.code.gson/gson/2.3/)

  (2)fastjson需要引用alibaba的jar,比如fastjson-1.2.28.jar(http://mvnrepository.com/artifact/com.alibaba/fastjson/1.2.28)

二、测试代码

注:两种方法使用时,对象模型字段注解有差别

(1)测试main方法

package mytest;
import java.lang.reflect.Type;
import java.util.List;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;import mytest.model.GsonModelP;
import mytest.model.ModelP;/*** json - java 转换* * @author Administrator* @time 2018-09-06*/
public class JsonParse {public static void main(String[] args) {//1、json字符串数组转java对象集合String arrayJson = "[{"+ "\"layerId\":" + "0"+ ",\"layerName\":"+ "\"SIP_BDC_QJ.dbo.BDC_ZD工业地块\""+ ",\"displayFieldName\":"+ "\"YSDM\""+ ",\"value\":"+ "\"73\""+ ",\"attributes\":"+ "{"+ "\"地块号\":"+ "\"23066\""+ ",\"ID\":"+ "\"73\""+ ",\"ZDMJ\":"+ "\"20063.45\""+ ",\"QLRMC\":"+ "\"ABC科技有限公司\""+ ",\"SHAPE.STLength()\":"+ "\"625.749399\""+ "}"+ "}]";//(1.1)阿里巴巴JSONList<ModelP> modelPList = JSON.parseArray(arrayJson, ModelP.class);System.out.println("array JSON:" + modelPList.get(0).toString());//(1.2)谷歌GSONType type = new TypeToken<List<GsonModelP>>(){}.getType(); //复杂对象,定义转换类型List<GsonModelP> modelPList2 = new Gson().fromJson(arrayJson, type);System.out.println("array GSON:" + modelPList2.get(0));//2、json字符串转java对象String strJson = "{"+ "\"layerId\":" + "0"+ ",\"layerName\":"+ "\"SIP_BDC_QJ.dbo.BDC_ZD工业宗地\""+ ",\"displayFieldName\":"+ "\"YSDM\""+ ",\"value\":"+ "\"73\""+ ",\"attributes\":"+ "{"+ "\"宗地号\":"+ "\"23066\""+ ",\"ID\":"+ "\"73\""+ ",\"ZDMJ\":"+ "\"20063.45\""+ ",\"QLRMC\":"+ "\"苏州晶能科技有限公司\""+ ",\"SHAPE.STLength()\":"+ "\"625.749399\""+ "}"+ "}";//(2.1)阿里巴巴JSONJSONObject jsonObj = JSON.parseObject(strJson);ModelP modelP = jsonObj.toJavaObject(ModelP.class);System.out.println("str JSON:" + modelP.toString());//(2.2)谷歌GSONGsonModelP modelP2 = new Gson().fromJson(strJson, GsonModelP.class);System.out.println("str GSON:" + modelP2.toString());//3、java对象转json字符串//(3.1)阿里巴巴JSONString javaObjToJsonStr = JSON.toJSON(modelP).toString();System.out.println("java obj to JSON:" + javaObjToJsonStr);//(3.2)谷歌GSONString javaToJson = new Gson().toJson(modelP2);System.out.println("java obj to GSON:" + javaToJson);}}

(2)测试model

package mytest.model;public class ModelP {private String layerId;private String layerName;private String displayFieldName;private String value;private ModelC attributes;public String getLayerId() {return layerId;}public void setLayerId(String layerId) {this.layerId = layerId;}public String getLayerName() {return layerName;}public void setLayerName(String layerName) {this.layerName = layerName;}public String getDisplayFieldName() {return displayFieldName;}public void setDisplayFieldName(String displayFieldName) {this.displayFieldName = displayFieldName;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}public ModelC getAttributes() {return attributes;}public void setAttributes(ModelC attributes) {this.attributes = attributes;}@Overridepublic String toString() {return "ModelP ["+ "layerId=" + layerId+ ", layerName=" + layerName+ ", displayFieldName=" + displayFieldName+ ", value=" + value+ ", attributes ["+ "ID =" + attributes.getID()+ ", landID =" + attributes.getLandID()+ ", landArea =" + attributes.getLandArea()+ ", obliName =" + attributes.getObliName()+ "]"+ "]";}}

View Code

package mytest.model;
import com.alibaba.fastjson.annotation.JSONField;public class ModelC {private String ID;@JSONField(name = "地块号")private String landID;@JSONField(name = "ZDMJ")private String landArea;@JSONField(name = "QLRMC")private String obliName;public String getID() {return ID;}public void setID(String iD) {ID = iD;}public String getLandID() {return landID;}public void setLandID(String landID) {this.landID = landID;}public String getLandArea() {return landArea;}public void setLandArea(String landArea) {this.landArea = landArea;}public String getObliName() {return obliName;}public void setObliName(String obliName) {this.obliName = obliName;}}

View Code

package mytest.model;public class GsonModelP {private String layerId;private String layerName;private String displayFieldName;private String value;private GsonModelC attributes;public String getLayerId() {return layerId;}public void setLayerId(String layerId) {this.layerId = layerId;}public String getLayerName() {return layerName;}public void setLayerName(String layerName) {this.layerName = layerName;}public String getDisplayFieldName() {return displayFieldName;}public void setDisplayFieldName(String displayFieldName) {this.displayFieldName = displayFieldName;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}public GsonModelC getAttributes() {return attributes;}public void setAttributes(GsonModelC attributes) {this.attributes = attributes;}@Overridepublic String toString() {return "ModelP ["+ "layerId=" + layerId+ ", layerName=" + layerName+ ", displayFieldName=" + displayFieldName+ ", value=" + value+ ", attributes ["+ "ID =" + attributes.getID()+ ", landID =" + attributes.getLandID()+ ", landArea =" + attributes.getLandArea()+ ", obliName =" + attributes.getObliName()+ "]"+ "]";}}

View Code

package mytest.model;
import com.google.gson.annotations.SerializedName;public class GsonModelC {private String ID;@SerializedName("地块号")private String landID;@SerializedName("ZDMJ")private String landArea;@SerializedName("QLRMC")private String obliName;public String getID() {return ID;}public void setID(String iD) {ID = iD;}public String getLandID() {return landID;}public void setLandID(String landID) {this.landID = landID;}public String getLandArea() {return landArea;}public void setLandArea(String landArea) {this.landArea = landArea;}public String getObliName() {return obliName;}public void setObliName(String obliName) {this.obliName = obliName;}}

View Code

转载于:https://www.cnblogs.com/super-yu/p/9598584.html

使用gson和fastjson来解析json相关推荐

  1. Gson、FastJson、org.JSON到底哪一个效率更高,速度更快

    博文首次发布于安卓巴士,现搬于CSDN之上(由于安卓巴士倒闭了...近期重新补了下图...) 写博客不易,珍惜笔者劳动成果,转载请标明原创作者地址 http://blog.csdn.net/zml_2 ...

  2. java lang保_android – Gson中的RuntimeException解析JSON:无法调用受保护的java.lang.ClassLoader()而没有args...

    问题是你试图直接将系统提供的类(Location)转换为JSON.而且,正如您所看到的,在序列化内部状态/ Java特定事物时会遇到问题. JSON是一种传递信息的半通用方式. 查看Location类 ...

  3. Andorid中使用Gson和Fast-json解析库解析JSON数据---第三方库学习笔记(二)

    JSON介绍: JSON:JavaScript对象表示法 JSON是存储和交换文本信息的语法. 特点: JSON是轻量级的文本数据交换格式 JSON独立于语言和平台 JSON具有自我描述性,更易理解 ...

  4. gson生成jsonobject_GSON形式生成和解析json数据

    GSON 方式生成和解析 json 数据 客户端与服务器进行数据交互时, 常常需要将数据在服务器端将数据转化成字符串并在客户 端对 json 数据进行解析生成对象. 但是用 jsonObject 和 ...

  5. 阿里巴巴的FastJson数据解析介绍

    阿里巴巴的FastJson数据解析介绍 本文简单介绍一下阿里巴巴的FastJson的json数据解析的简单用法. FastJson据说是目前Json数据解析最快捷的工具,虽然传闻会有一些bug,但是基 ...

  6. JSON解析工具比较,主要GSON和FastJSON

    转自:http://www.cnblogs.com/kunpengit/p/4001680.html 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的 ...

  7. 【4-8】《XML与JSON》——XML、解析XML、SAX、DOM4J、XStream、JSON、Gson、Fastjson

    文章目录 XML与JSON 一.XML 1.XML概述 1.XML语法格式 2.语法进阶CDATA(了解) 2.解析XML 1.SAX解析 2.DOM解析 3.JDOM解析 4.DOM4J解析 3.D ...

  8. json解析:[1]gson解析json

    客户端与服务器进行数据交互时,常常需要将数据在服务器端将数据转化成字符串并在客户端对json数据进行解析生成对象.但是用jsonObject和jsonArray解析相对麻烦.利用Gson和阿里的fas ...

  9. 各个JSON技术的比较(Jackson,Gson,Fastjson)的对比

    JSON技术的调研报告 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包, 包括 ...

  10. Okhttp源码分析以及Google Gson解析json数据实例

    Okhttp Github的Okhttp OkHttp是一个高效的HTTP客户端,它有以下默认特性: 支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接 透明的GZIP压缩减少响 ...

最新文章

  1. HTML语义化:HTML5新标签——template
  2. ASP.NET2.0的multiview和wizard控件
  3. Linux启动界面切换:图形界面-字符界面(转)
  4. fastJson反序列化异常,JSONException: expect ‘:‘ at 0, actual =
  5. arm-linux-g 找不到头文件,交叉编译错误“ arm-none-eabi-g ++找不到条目符号”
  6. mysql用户_MySQL用户权限管理详解
  7. SQL Server 2005 无法连接到服务器,error:26
  8. Biorhythms 中国剩余定理
  9. 发现本站一个非常简单易学的springClould教程 特此转载《方志朋》
  10. 【WPS】excel 使用MD5宏 windows环境
  11. windows平台下cocos2d-x+Python+VS2010的win32开发环境架设
  12. 游戏策划入门(2)——如何写一份项目建议书?
  13. Android简历知识点模板
  14. [C8MIm]SbF6离子液体379712-23-9/1-辛基-3-甲基咪唑六氟锑酸盐的分子量:431.0748392对吗?
  15. SCT2280FPAR,可以P2P参数MP8756
  16. 6.Python常用第三方库—jieba库的使用(中文分词词库)
  17. 中国人工智能大赛个人赛正式收官,优质企业、专业参赛团队继续“接棒”
  18. 秉火429笔记之十七 SPI--操作FLASH
  19. sqlalchemy.exc.ArgumentError: relationship 'tags' expects a class or a mapper argument (received:
  20. 产品防伪码查询系统_学历学籍查询系统_证书查询系统_录取成绩查询系统_工资查询系统_信息查询系统

热门文章

  1. 【Spring】白话IoC及容器的初始化
  2. [转]iOS技巧之获取本机通讯录中的内容,解析通讯录源代码
  3. DNS在企业网络中的应用(一)
  4. 四大障碍将阻止或减缓广电发展宽带业务
  5. 普通交换机上的网卡绑定
  6. java 前后台传参数为json格式,如何取出
  7. Eclipse开发环境下,部署和配置svn的整个过程
  8. 深圳有哪些牛逼的互联网公司?看完你再跳槽!
  9. Python 爬取百度网盘所有热门分享文件
  10. 5 月编程语言排行榜:Java第一,R 跌出Top20,Python成最大赢家