java生成Json工具之JsonSimple的使用
2016-11-29 00:00
253 查看
json-simple是由是Google开发的JavaJSON解析框架,基于Apache协议。目前版本为1.1
项目主页:https://code.google.com/p/json-simple/#JSON.simple_in_Publications
从此表中我们可以看出,当解析json对象映射到java实体类时,是从左边到右边。从左边到右边是Java实体类到json字符。在编码时默认的JSONArray是继承了ArrayList实现了List接口,JSONObject是继承了HashMap实现了Map接口。jsonsimple默认的只支持表中的几种类型转换为json如果是一个复杂的对象要转换成Json字符,该类要实现JSONAware接口或者是JSONStreamAware。实现了以上两个接口后必须要重写toJSONString()或者writeJSONString()。来输出json字符。
好了,话不多说,看例子吧!
Example1-1-EncodeaJSONobject
Example1-2-EncodeaJSONobject–Streaming
Example2-1-EncodeaJSONarray
Example2-2-EncodeaJSONarray-UsingList
Example2-3-EncodeaJSONarray-UsingListandstreaming
Example3-MergetwoJSONobjects
Example4-MergetwoJSONarrays
Example5-1-CombinationofJSONprimitives,MapandList
Example5-2-CombinationofJSONprimitives,JSONObject,MapandList,andstreaming
Example6-CustomizeJSONoutputs
如果你使用了maven来创建项目也可在pom中添加以下依赖:
总结:jsonsimple对于简单转换成json对象,但是对于比较复杂的对象就不太好了,复杂的对象都要实现JSONAware重写对应的方法,才能实现指定格式的输出。
项目主页:
Java实体类和JSON对象之间的映射如下表:
JSON | Java |
string | java.lang.String |
number | java.lang.Number |
true|false | java.lang.Boolean |
null | null |
array | java.util.List |
object | java.util.Map |
好了,话不多说,看例子吧!
Example1-1-EncodeaJSONobject
//是java中HashMap的子类 JSONObjectjson=newJSONObject();json.put("name","张晓天");json.put("boolean",true);json.put("null",null);json.put("num",7);json.put("double",34.5);printJson(json.toJSONString());//{"num":7,"name":"张晓天","boolean":true,"double":34.5,"null":null}
Example1-2-EncodeaJSONobject–Streaming
JSONObjectobj=newJSONObject();obj.put("name","foo");obj.put("num",newInteger(100));obj.put("balance",newDouble(1000.21));obj.put("is_vip",newBoolean(true));obj.put("nickname",null);StringWriterout=newStringWriter();try{obj.writeJSONString(out);}catch(IOExceptione){//TODOAuto-generatedcatchblock e.printStackTrace();}StringjsonText=out.toString();printJson(jsonText);//{"balance":1000.21,"num":100,"nickname":null,"is_vip":true,"name":"foo"}
Example2-1-EncodeaJSONarray
JSONArraylist=newJSONArray();list.add("foot");list.add("张晓天");list.add(false);list.add(6.9);list.add(7);list.add(null);printJson(list.toJSONString());//["foot","张晓天",false,6.9,7,null]
Example2-2-EncodeaJSONarray-UsingList
Listlist=newLinkedList<>();list.add("foot");list.add("张晓天");list.add(false);list.add(6.9);list.add(7);list.add(null);StringjsonText=JSONValue.toJSONString(list);printJson(jsonText);//["foot","张晓天",false,6.9,7,null]
Example2-3-EncodeaJSONarray-UsingListandstreaming
LinkedListlist=newLinkedList();list.add("张晓天");list.add(100);list.add(1000.21);list.add(true);list.add(null);StringWriterout=newStringWriter();try{JSONValue.writeJSONString(list,out);}catch(IOExceptione){//TODOAuto-generatedcatchblock e.printStackTrace();}StringjsonText=out.toString();printJson(jsonText);//["张晓天",100,1000.21,true,null]
Example3-MergetwoJSONobjects
JSONObjectjson1=newJSONObject();json1.put("name","json1");json1.put("age",3);json1.put("balance",3.8);JSONObjectjson2=newJSONObject();json2.put("is_vip","是");json2.put("nickname",null);json2.put("num",8.9);json2.putAll(json1);//注意两个对象的key不能一样,否则会替换 printJson(json2.toJSONString());//{"balance":3.8,"num":8.9,"nickname":null,"is_vip":"是","name":"json1","age":3}
Example4-MergetwoJSONarrays
JSONArraylist1=newJSONArray();list1.add("foo");list1.add(newInteger(100));list1.add(newDouble(1000.21));JSONArraylist2=newJSONArray();list2.add(newBoolean(true));list2.add(null);JSONObjectobj=newJSONObject();obj.put("name","foo");obj.put("num",newInteger(100));obj.put("balance",newDouble(1000.21));obj.put("is_vip",newBoolean(true));obj.put("nickname",null);obj.put("list1",list1);obj.put("list2",list2);printJson(obj.toJSONString());//{"balance":1000.21,"list2":[true,null],"num":100,"list1":["foo",100,1000.21],"nickname":null,"is_vip":true,"name":"foo"}
Example5-1-CombinationofJSONprimitives,MapandList
Mapm1=newLinkedHashMap();Mapm2=newHashMap();Listl1=newLinkedList();m1.put("one","第一值");m1.put("two","第二个值");m2.put("k1","m2-k1");m2.put("k2","m2-k2");l1.add(m1);l1.add(m2);Stringjson=JSONValue.toJSONString(l1);printJson(json);//[{"one":"第一值","two":"第二个值"},{"k1":"m2-k1","k2":"m2-k2"}]
Example5-2-CombinationofJSONprimitives,JSONObject,MapandList,andstreaming
StringWriterout=newStringWriter();JSONObjectobj=newJSONObject();LinkedHashMapm1=newLinkedHashMap();LinkedListl1=newLinkedList();obj.put("k1","v1");obj.put("k2",m1);obj.put("k3",l1);m1.put("mk1","mv1");l1.add("lv1");l1.add("lv2");m1.put("mk2",l1);try{obj.writeJSONString(out);}catch(IOExceptione){//TODOAuto-generatedcatchblock e.printStackTrace();}System.out.println("jsonString:");System.out.println(out.toString());StringjsonString=obj.toJSONString();System.out.println(jsonString);
Example6-CustomizeJSONoutputs
JSONArrayusers=newJSONArray();users.add(newUser(123,"zxd","zxd"));users.add(newUser(124,"ksks","ksk"));users.add(newUser(125,"\"foo2\"","secret2"));printJson(users.toJSONString());//[{userName:"zxd",ID:123},{userName:"ksks",ID:124},{userName:"\"foo2\"",ID:125}]
JSONArrayusers=newJSONArray();users.add(newUser(123,"foo1","secret1"));users.add(newUser(124,"foo2","secret2"));users.add(newUser(125,"\"foo2\"","secret2"));StringWriterout=newStringWriter();try{users.writeJSONString(out);}catch(IOExceptione){//TODOAuto-generatedcatchblock e.printStackTrace();}printJson(out.toString());//[{userName:"foo1",ID:123},{userName:"foo2",ID:124},{userName:"\"foo2\"",ID:125}]
classUserimplementsJSONAware{privateintid;privateStringname;privateStringpassword;publicUser(intid,Stringname,Stringpassword){this.id=id;this.name=name;this.password=password;}publicStringtoJSONString(){StringBuffersb=newStringBuffer();sb.append("{");sb.append(JSONObject.escape("userName"));sb.append(":");sb.append("\""+JSONObject.escape(name)+"\"");sb.append(",");sb.append(JSONObject.escape("ID"));sb.append(":");sb.append(id);sb.append("}");//也可以这样写 /**JSONObjectobj=newJSONObject();obj.put("userName",name);*obj.put("ID",newInteger(id));returnobj.toString();*/ returnsb.toString();}publicvoidwriteJSONString(Writerout)throwsIOException{LinkedHashMapobj=newLinkedHashMap();obj.put("userName",name);obj.put("ID",newInteger(id));JSONValue.writeJSONString(obj,out);}}
如果你使用了maven来创建项目也可在pom中添加以下依赖:
<dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1.1</version> </dependency>
总结:jsonsimple对于简单转换成json对象,但是对于比较复杂的对象就不太好了,复杂的对象都要实现JSONAware重写对应的方法,才能实现指定格式的输出。
相关文章推荐
- java生成Json工具之JsonSimple的使用
- android(安卓)开源框架 使用在线工具jsonschema2pojo根据json生成java对象
- jsp/servlet使用ajax动态加载dtree, dtree样式/图片修改 (java 生成dtree servlet json)
- 在JAVA中使用JSONObject生成json
- ETL工具kettle与java结合使用程序生成一个简单的转化文件
- 使用java的wsimport.exe工具生成wsdl的客户端代码
- 利用在线工具根据JSon数据自动生成对应的Java实体类
- 使用Axis2中的工具wsdl2Java的生成客户端和服务端代码
- 在JAVA中使用JSONObject生成json
- 使用java的wsimport.exe工具生成wsdl的客户端代码
- 使用hibernate扩展工具Hbm2JavaTask根据配置文件生成持久化对象类(2.1.2)
- 浅谈使用java解析和生成JSON
- 使用java生成Json数据
- 使用java生成Json数据
- 在JAVA中使用JSONObject生成json
- 在www.json.org上公布了很多Java下的json解析工具,其中org.json和json-lib比较简单,两者使用上差不多
- 在JAVA中使用JSONObject生成json
- android 使用swig工具, 依据JNI文件快速生成对应java文件
- 使用java的wsimport.exe工具生成wsdl的客户端代码
- Java程序员的好工具:通过json生成javabean(pojo)