Java Json 序列化与反序列化
来源:互联网 发布:淘宝店描述怎么写 编辑:程序博客网 时间:2024/06/05 20:16
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。
下面介绍两款自己在开发中常用的处理Json的Java开源类库:Gson和Fastjson
1、Gson
Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object. Gson can work with arbitrary Java objects including pre-existing objects that you do not have source-code of.
Gson官网:http://code.google.com/p/google-gson/
Gson User Guide:https://sites.google.com/site/gson/gson-user-guide
2、Fastjson
Fastjson是一个json处理工具包,由阿里巴巴公司开发,包括“序列化”和“反序列化”两部分,它具备如下特征:
- 速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。包括自称最快的jackson。
- 功能强大,完全支持java bean、集合、Map、日期、Enum,支持范型,支持自省。
- 无依赖,能够直接运行在Java SE 5.0以上版本
- 支持Android。
- 开源 (Apache 2.0)
package com.example.testjson.entity;import java.util.Date;import java.util.List;import java.util.Map;public class Person { private String name; private FullName fullName; private int age; private Date birthday; private List<String> hobbies; private Map<String, String> clothes; private List<Person> friends; public String getName() {return name;}public void setName(String name) {this.name = name;}public FullName getFullName() {return fullName;}public void setFullName(FullName fullName) {this.fullName = fullName;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public List<String> getHobbies() {return hobbies;}public void setHobbies(List<String> hobbies) {this.hobbies = hobbies;}public Map<String, String> getClothes() {return clothes;}public void setClothes(Map<String, String> clothes) {this.clothes = clothes;}public List<Person> getFriends() {return friends;}public void setFriends(List<Person> friends) {this.friends = friends;}@Override public String toString() { String str= "Person [name=" + name + ", fullName=" + fullName + ", age=" + age + ", birthday=" + birthday + ", hobbies=" + hobbies + ", clothes=" + clothes + "]\n"; if(friends!=null){ str+="Friends:\n"; for (Person f : friends) { str+="\t"+f; } } return str; } }class FullName { private String firstName; private String middleName; private String lastName; public FullName(){ } public FullName(String firstName, String middleName, String lastName) {super();this.firstName = firstName;this.middleName = middleName;this.lastName = lastName;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getMiddleName() {return middleName;}public void setMiddleName(String middleName) {this.middleName = middleName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}@Override public String toString() { return "[firstName=" + firstName + ", middleName=" + middleName + ", lastName=" + lastName + "]"; } }
package com.example.testjson.entity;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class PersonFactory {private static Person createABSPerson(String name,List<Person> friends) { Person newPerson = new Person(); newPerson.setName(name); newPerson.setFullName(new FullName(name+"_first", name+"_middle", name+"_last")); newPerson.setAge(24); List<String> hobbies=new ArrayList<String>(); hobbies.add("篮球"); hobbies.add("游泳"); hobbies.add("coding"); newPerson.setHobbies(hobbies); Map<String,String> clothes=new HashMap<String, String>(); clothes.put("coat", "Nike"); clothes.put("trousers", "adidas"); clothes.put("shoes", "安踏"); newPerson.setClothes(clothes); newPerson.setFriends(friends); return newPerson; } public static Person create(String name){ List<Person> friends=new ArrayList<Person>(); friends.add(createABSPerson("小明",null)); friends.add(createABSPerson("Tony",null)); friends.add(createABSPerson("陈小二",null)); return createABSPerson(name,friends); }}
package com.example.testjson.gson;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.JsonElement;import com.google.gson.JsonParser;public class GsonUtil {private static Gson gson = new GsonBuilder().create(); public static String bean2Json(Object obj){ return gson.toJson(obj); } public static <T> T json2Bean(String jsonStr,Class<T> objClass){ return gson.fromJson(jsonStr, objClass); } public static String jsonFormatter(String uglyJsonStr){ Gson gson = new GsonBuilder().setPrettyPrinting().create(); JsonParser jp = new JsonParser(); JsonElement je = jp.parse(uglyJsonStr); String prettyJsonString = gson.toJson(je); return prettyJsonString; }}
package com.example.testjson.fastjson;import com.alibaba.fastjson.JSON;public class FastJsonUtil {public static String bean2Json(Object obj){ return JSON.toJSONString(obj); } public static <T> T json2Bean(String jsonStr,Class<T> objClass){ return JSON.parseObject(jsonStr, objClass); }}
package com.example.testjson;import com.example.testjson.entity.Person;import com.example.testjson.entity.PersonFactory;import com.example.testjson.gson.GsonUtil;public class GsonTest {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubPerson p = PersonFactory.create("Kobe");String json = GsonUtil.bean2Json(p);String prettyJsonString = GsonUtil.jsonFormatter(json);System.out.println("FastJson Serializing="+json);System.out.println("FastJson Serializing PrettyPrinting="+prettyJsonString);Person newPerson = GsonUtil.json2Bean(json, Person.class);System.out.println("FastJson Deserializing="+newPerson);}}
package com.example.testjson;import com.example.testjson.entity.Person;import com.example.testjson.entity.PersonFactory;import com.example.testjson.fastjson.FastJsonUtil;public class FastJsonTest {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubPerson p = PersonFactory.create("Kobe");String json = FastJsonUtil.bean2Json(p);System.out.println("FastJson Serializing="+json);Person newPerson = FastJsonUtil.json2Bean(json, Person.class);System.out.println("FastJson Deserializing="+newPerson);}}
示例Demo下载:http://download.csdn.net/detail/fx_sky/6771327
- Java Json 序列化与反序列化
- Java--json序列化与反序列化
- java json 序列化与反序列化
- java中json序列化与反序列化
- Json序列化 与反序列化
- JSON序列化与反序列化
- JSON序列化与反序列化
- Json序列化与反序列化
- Json序列化与反序列化
- JSON序列化与反序列化
- JSON序列化与反序列化
- JSON序列化与反序列化
- JSON序列化 与反序列化
- JSON序列化与反序列化
- JSON序列化与反序列化
- JSON序列化与反序列
- java序列化与反序列化
- java序列化与反序列化
- 菜鸟Android学习之路28——AlertDialog(3)带多个单选项的列表框
- 组件(Component)映射
- Mac ssh登陆远程Linux不需输入密码
- PS 模块常用表
- linux下非阻塞的tcp认识与理解
- Java Json 序列化与反序列化
- 抓包
- httpClient模拟新浪登录
- Android应用升级构想和要点总结
- usb_serial之repllog.exe不能自启动
- 外媒评选出的2013年度10大Android应用
- SAP SD 条件技术
- Web测试总结(全)
- win7 远程桌面的多用户问题