微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Gson和Fastjson的使用

转载自:JSON技术的调研报告 :http://www.cnblogs.com/kunpengit/p/4001680.html

一、Google的Gson包的使用简介。
Gson类:解析json的最基础的工具类
JsonParser类:解析器来解析JSON到JsonElements的解析树
JsonElement类:一个类代表的JSON元素
JsonObject类:JSON对象类型
JsonArray类:JsonObject数组
Typetoken类:用于创建type,比如泛型List
(1)maven依赖
com.google.code.gson
gson
2.3.1

开源地址 https://github.com/google/gson

(2)基础转换类
public class Book{
private String id;
private String name;
public Book() {
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Student{
private String name;
private int age;
private String sex;
private String describe;
private Set books;
public Student() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Set getBooks() {
return books;
}
public void setBooks(Set books) {
this.books = books;
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
}
(3)bean转换json
Gson gson = new Gson();
String json = gson.toJson(obj);
obj是对象
(4)json转换bean
Gson gson = new Gson();
String json = “{\”id\”:\”2\”,\”name\”:\”Json技术\”}”;
Book book = gson.fromJson(json,Book.class);
(5)json转换复杂的bean,比如List,Set
将json转换成复杂类型的bean,需要使用Typetoken
Gson gson = new Gson();
String json = “[{\”id\”:\”1\”,\”name\”:\”Json技术\”},{\”id\”:\”2\”,\”name\”:\”java技术\”}]”;
//将json转换成List
List list = gson.fromJson(json,new Typetoken() {}.getType());
//将json转换成Set
Set set = gson.fromJson(json,new Typetoken() {}.getType());
(6)通过json对象直接操作json以及一些json的工具
a)格式化Json
String json = “[{\”id\”:\”1\”,\”name\”:\”java技术\”}]”;
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(json);
json = gson.toJson(je);
b)判断字符串是否是json,通过捕捉的异常来判断是否是json
String json = “[{\”id\”:\”1\”,\”name\”:\”java技术\”}]”;
boolean jsonFlag;
try {
new JsonParser().parse(str).getAsJsonObject();
jsonFlag = true;
} catch (Exception e) {
jsonFlag = false;
}
c)从json串中获取属性
String json = “{\”id\”:\”1\”,\”name\”:\”Json技术\”}”;
String propertyName = ‘id’;
String propertyValue = “”;
try {
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
propertyValue = jsonObj.get(propertyName).toString();
} catch (Exception e) {
propertyValue = null;
}
d)除去json中的某个属性
String json = “{\”id\”:\”1\”,\”name\”:\”Json技术\”}”;
String propertyName = ‘id’;
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.remove(propertyName);
json = jsonObj.toString();
e)向json中添加属性
String json = “{\”id\”:\”1\”,\”name\”:\”Json技术\”}”;
String propertyName = ‘desc’;
Object propertyValue = “json各种技术的调研”;
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.addProperty(propertyName,new Gson().toJson(propertyValue));
json = jsonObj.toString();
f)修改json中的属性
String json = “{\”id\”:\”1\”,\”name\”:\”Json技术\”}”;
String propertyName = ‘name’;
Object propertyValue = “json各种技术的调研”;
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
jsonObj.remove(propertyName);
jsonObj.addProperty(propertyName,new Gson().toJson(propertyValue));
json = jsonObj.toString();
g)判断json中是否有属性
String json = “{\”id\”:\”1\”,\”name\”:\”Json技术\”}”;
String propertyName = ‘name’;
boolean isContains = false ;
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(json);
JsonObject jsonObj = element.getAsJsonObject();
isContains = jsonObj.has(propertyName);
h)json中日期格式的处理
GsonBuilder builder = new GsonBuilder();
builder.setDateFormat(“yyyy-MM-dd HH:mm:ss.SSS”);
Gson gson = builder.create();
然后使用gson对象进行json的处理,如果出现日期Date类的对象,就会按照设置的格式进行处理
i)json中对于Html的转义
Gson gson = new Gson();
这种对象认对Html进行转义,如果不想转义使用下面的方法
GsonBuilder builder = new GsonBuilder();
builder.disableHtmlEscaping();
Gson gson = builder.create();
二、阿里巴巴的FastJson包的使用简介。
(1)maven依赖
com.alibaba
fastjson
1.2.7
开源地址 https://github.com/alibaba/fastjson

(2)基础转换类
同上
(3)bean转换json
将对象转换成格式化的json
JSON.toJSONString(obj,true);
将对象转换成非格式化的json
JSON.toJSONString(obj,false);
obj设计对象
对于复杂类型的转换,对于重复的引用在转成json串后在json串中出现引用的字符,比如 ref":" [0].books[1] Student stu = new Student(); Set books= new HashSet(); Book book = new Book(); books.add(book); stu.setBooks(books); List list = new ArrayList(); for(int i=0;i<5;i++) list.add(stu); String json = JSON.toJSONString(list,true); (4)json转换bean String json = “{\”id\”:\”2\”,\”name\”:\”Json技术\”}”; Book book = JSON.parSEObject(json,Book.class); (5)json转换复杂的bean,比如List,Map String json = “[{\”id\”:\”1\”,\”name\”:\”java技术\”}]”; //将json转换成List List list = JSON.parSEObject(json,new TypeReference(){}); //将json转换成Set Set set = JSON.parSEObject(json,new TypeReference(){}); (6)通过json对象直接操作json a)从json串中获取属性 String propertyName = ‘id’; String propertyValue = “”; String json = “{\”id\”:\”1\”,\”name\”:\”Json技术\”}”; JSONObject obj = JSON.parSEObject(json); propertyValue = obj.get(propertyName)); b)除去json中的某个属性 String propertyName = ‘id’; String propertyValue = “”; String json = “{\”id\”:\”1\”,\”name\”:\”Json技术\”}”; JSONObject obj = JSON.parSEObject(json); Set set = obj.keySet(); propertyValue = set.remove(propertyName); json = obj.toString(); c)向json中添加属性 String propertyName = ‘desc’; Object propertyValue = “json的玩意儿”; String json = “{\”id\”:\”1\”,\”name\”:\”Json技术\”}”; JSONObject obj = JSON.parSEObject(json); obj.put(propertyName,JSON.toJSONString(propertyValue)); json = obj.toString(); d)修改json中的属性 String propertyName = ‘name’; Object propertyValue = “json的玩意儿”; String json = “{\”id\”:\”1\”,\”name\”:\”Json技术\”}”; JSONObject obj = JSON.parSEObject(json); Set set = obj.keySet(); if(set.contains(propertyName)) obj.put(propertyName,JSON.toJSONString(propertyValue)); json = obj.toString(); e)判断json中是否有属性 String propertyName = ‘name’; boolean isContain = false; String json = “{\”id\”:\”1\”,\”name\”:\”Json技术\”}”; JSONObject obj = JSON.parSEObject(json); Set set = obj.keySet(); isContain = set.contains(propertyName); f)json中日期格式的处理 Object obj = new Date(); String json = JSON.toJSONStringWithDateFormat(obj,“yyyy-MM-dd HH:mm:ss.SSS”); 使用JSON.toJSONStringWithDateFormat,该方法可以使用设置的日期格式对日期进行转换

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交互,节省带宽和时间,提高用户体验。在使用AJAX时,需要通过解析JSON格式的数据,来获取所需要的数据。
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面中展示出来。其中,JSON是一种常用的数据格式。那么,在使用Ajax获取JSON数据后,如何将数据取出来呢?
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用AJAX技术可以在不刷新页面的情况下异步获取数据。那么我们该如何循环JSON对象数组呢?下面我们通过一段代码来进行讲解。
AJAX(Asynchronous JavaScript and XML)是一种用于创建 Web 应用程序的技术,它使用 JavaScript 和 XML(或 JSON)来在后台异步传输数据。
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面的情况下,向服务器发出请求并更新页面,实现了异步更新的效果。而传递JSON数据是AJAX中比较常见的一种方法,下面是如何使用AJAX传递JSON数据的详细介绍。
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无需刷新页面的异步数据交互。在处理数据时,常常需要删除一些已存在的数据。本文将介绍如何使用Ajax删除JSON数据库中的数据。
在使用Ajax时,我们经常需要将数据格式化为JSON格式。JSON是一种轻量级数据交换格式,它以键值对的形式来表达数据。
AJAX是一种支持异步请求的技术,它可以让前端页面不用刷新就能向后台请求数据,并异步地展示给用户,提高了用户的体验感。其中,使用JSON格式化数据可以帮助我们更方便快捷地处理返回的数据。
AJAX是一种前端技术,可以通过异步请求来获取数据,并在页面上更新它们。JSON是一种轻量级的数据交换格式,因为它易于读取和编写,因此在Web应用程序中被广泛使用。AJAX传送JSON数据是一种常见的技术,可以让Web应用
在前端开发中,ajax是很常见的技术,它可以在不刷新整个页面的情况下请求服务器数据和更新部分页面。而当需要遍历多个json文件时,可以使用ajax循环遍历来实现。