Json处理的常用解决方案
通过学习后的思考--JSON对于我的工作来说有什么用?
Json是为保存复杂对象的信息提供了一种解决方案,对于测试或开发都是非常重要的。
现在大型系统大多都是需要调用外部的webService或者依赖外部数据的,利用Json可以对复杂对象
进行备份,那么就可以在一定程度上应对外部环境可能存在的不稳定。
本文目标
1 使用jsontools工具与guava工具实现json<-->对象之间的互相转换,以及从本地资源文件读取json数据
2 使用 http://jsongen.byingtondesign.com/ 网站实现json串转JAVAbean文件
目录
1 使用jsontools工具实现对json串转对象,或者对象转json串
2 使用guava 实现从文件读取Json串 (与1组合使用较为重要)
3 通过网上的Json工具将Json对象转成JAVABEAN文件 ----- http://jsongen.byingtondesign.com/
一、 使用jsontools工具实现对json串转对象,或者对象转json串
1 准备jar文件
<dependency> <groupId>com.sdicons.jsontools</groupId> <artifactId>jsontools-core</artifactId> <version>1.7</version> </dependency>
2 转化开始
1 对象转化成json串
package com.sunfan.serivceImpl.test; import org.junit.Before; import org.junit.Test; import com.sdicons.json.mapper.JSONMapper; import com.sdicons.json.mapper.MapperException; import com.sdicons.json.model.JSONValue; import com.sunfan.entity.User; public class JsonToolTest { User user; @Before public void setUp() throws Exception { user = new User(); user.setId(0); user.setGroup("ces"); user.setUsername("sunfan"); user.setRemark("testJsonTool"); } @Test public void case1() throws MapperException {//对象转换成json串 JSONValue jsonStr =JSONMapper.toJSON(user);//第一步----对象转化成JSONValue String json1 = jsonStr.render(true);//第二步转化成字符串 true String json2 = jsonStr.render(false);//第二部转化成字符串 false System.out.println("---------true--------------"+"\r\n"+json1); System.out.println("---------false--------------"+"\r\n"+json2); } }
执行结果
---------true-------------- { "crt_date" : null, "group" : "ces", "id" : 0, "opt_date" : null, "password" : null, "remark" : "testJsonTool", "username" : "sunfan" } ---------false-------------- {"crt_date":null,"group":"ces","id":0,"opt_date":null,"password":null,"remark":"testJsonTool","username":"sunfan"}
2 json串转对象
package com.sunfan.serivceImpl.test; import java.io.StringReader; import org.junit.Before; import org.junit.Test; import antlr.RecognitionException; import antlr.TokenStreamException; import com.sdicons.json.mapper.JSONMapper; import com.sdicons.json.mapper.MapperException; import com.sdicons.json.model.JSONValue; import com.sdicons.json.parser.JSONParser; import com.sunfan.entity.User; public class JsonToolTest { User user; @Before public void setUp() throws Exception { user = new User(); user.setUsername("sunfan"); user.setRemark("testJsonTool"); } @Test public void case1() throws MapperException, TokenStreamException, RecognitionException {//json串转换成对象 JSONValue jsonStr =JSONMapper.toJSON(user);//对象转化成JSONValue String json2 = jsonStr.render(false);//获取JSON串 System.out.println(json2); //OK,测试数据已经生成 {"crt_date":null,"group":"ces","id":0,"opt_date":null,"password":null,"remark":"testJsonTool","username":"sunfan"} JSONValue jsonValue = new JSONParser(new StringReader(json2)).nextValue(); // 第一步---转成 jsonValue User user1 = (User)JSONMapper.toJava(jsonValue, User.class); //第二步 ----转化成对象 System.out.println(user1.getUsername()); } }
执行结果
{"crt_date":null,"group":"ces","id":0,"opt_date":null,"password":null,"remark":"testJsonTool","username":"sunfan"} sunfan
二、使用guava工具实现从文件读取Json串
1 引入JAR
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>16.0.1</version> </dependency>
2 新建user.json位于src目录下
{"crt_date":null,"group":"ces","id":0,"opt_date":null,"password":null,"remark":"testJsonTool","username":"sunfan"}
3 从文件获取json串
package com.sunfan.serivceImpl.test; import java.io.IOException; import org.junit.Before; import org.junit.Test; import com.google.common.base.Charsets; import com.google.common.io.Resources; public class JsonToolTest { @Before public void setUp() throws Exception { } @Test public void case1() throws IOException{ String json = Resources.toString(Resources.getResource("user.json"), Charsets.UTF_8); System.out.println(json); } }
4 结合jsonTool工具转化成JAVA对象(重要)
package com.sunfan.serivceImpl.test; import java.io.IOException; import java.io.StringReader; import org.junit.Before; import org.junit.Test; import antlr.RecognitionException; import antlr.TokenStreamException; import com.google.common.base.Charsets; import com.google.common.io.Resources; import com.sdicons.json.mapper.JSONMapper; import com.sdicons.json.mapper.MapperException; import com.sdicons.json.model.JSONValue; import com.sdicons.json.parser.JSONParser; import com.sunfan.entity.User; public class JsonToolTest { @Before public void setUp() throws Exception { } @Test public void case1() throws IOException, MapperException, TokenStreamException, RecognitionException{ String json = Resources.toString(Resources.getResource("user.json"), Charsets.UTF_8); System.out.println(json); JSONValue jsonValue = new JSONParser(new StringReader(json)).nextValue(); User user = (User)JSONMapper.toJava(jsonValue,User.class); System.out.println(user.getUsername()); } }
执行结果
{"crt_date":null,"group":"ces","id":0,"opt_date":null,"password":null,"remark":"testJsonTool","username":"sunfan"} sunfan
三、通过网上的Json工具将Json串转成JAVABEAN文件
1 得到一枚json串 {"crt_date":null,"group":"ces","id":0,"opt_date":null,"password":null,"remark":"testJsonTool","username":"sunfan"}
2 把json串部署到网页上去(个人使用百度网盘进行上传)
2.1 上传文件
2.2 发布资源
2.3获取下载链接
2.4 获取的链接如下
http://www.baidupcs.com/file/69d5d6339f30db83f1edb09f9da3b469?xcode=023761a3c606f4b7ec18def04187c3f5717d7660b160264e&fid=1023768794-250528-752428762216083&time=1394369937&sign=FDTAXER-DCb740ccc5511e5e8fedcff06b081203-9jCvFze1PUB%2Bc4EfYHPoxafXeYQ%3D&to=wb&fm=Q,B,T,t&expires=1394370537&rt=sh&r=988675073&logid=855048184&sh=1&vuk=1023768794&fn=user.json
3 打开 http://jsongen.byingtondesign.com/ 登陆后把获取到的JSON链接填入即可
4 打开生成的文件查看结果(完成)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。