3中转换JSON数据的方式
一:前言
来公司一个星期,把最近做的东西梳理下,并把觉得有必要的知识点记载下,现在传数据很多都是用JSON来传数据,所以我就找了集中传json的方式,其实是有五种的,但是有一个我没有用过,太陌生了,上次也在网上看了看,估计可以照着用,但是要我讲的话我还是觉得挺有难度的。还有个也没有用过。我都会在下面提一下
二:内容
我现在可以用的JSON有三种:
(一):Google的JSON的jar包处理

(二):阿里巴巴解析JSON的jar包

(三):Struts2解析的jar包

(四):jsonrpc,这个我看看了,主要是在网页里面进行,它可以你透明地在JavaScript中调用Java代码:具体可以看这篇文章
http://blog.csdn.net/yaerfeng/article/details/26079889

(五):json-simple.jar的jar包,其实我不会用,只是知道有这种jar包,没有用过,刚刚看到的。
二:内容
(一):google的Json解析方式
package org.wh.JsonDemo; import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; public class GJsonTest { public static void main(String[] args) {
Student s1=new Student(1,"mahone","男",23,"湖北随州",new Date(),new java.sql.Date(0));
Student s2=new Student(2,"mouse","男",23,"湖北随州",new Date(),new java.sql.Date(0));
Student s3=new Student(3,"moon","女",23,"湖北随州",new Date(),new java.sql.Date(0));
Student s4=new Student(4,"mahone1","男",23,"湖北随州",new Date(),new java.sql.Date(0));
Student s5=new Student(5,"mahone2","男",23,"湖北随州",new Date(),new java.sql.Date(0)); List<Student> list=new ArrayList<Student>();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5); Map<String,String> map=new HashMap<String,String>();
map.put("a", "aa");
map.put("b", "bb");
map.put("c", "cc");
map.put("d", "dd");
map.put("e", "ee"); //--------------------google 的json-----------------------------------------------------------------
System.out.println(list);
Gson g=new Gson();
String exInfo1=g.toJson(s1);
System.out.println("Google转化为的单个对象:-->"+exInfo1); String exList=g.toJson(list);
System.out.println("Google的List转化的json:-->"+exList); String exMap=g.toJson(map);
System.out.println("Google的map的转换---->"+exMap); //把json转换为List
Student st=g.fromJson("{\"id\":1,\"name\":\"mahone\",\"sex\":\"男\",\"age\":23,\"birthday\":\"Dec 18, 2014 3:59:45 PM\",\"address\":\"湖北随州\",\"senior\":\"一月 1, 1970\"}", Student.class);
System.out.println("-->"+st);
List<Student> list1=g.fromJson("[{\"id\":1,\"name\":\"mahone\",\"sex\":\"男\",\"age\":23,\"birthday\":\"Dec 18, 2014 3:59:45 PM\",\"address\":\"湖北随州\",\"senior\":\"一月 1, 1970\"},{\"id\":2,\"name\":\"mahone\",\"sex\":\"男\",\"age\":23,\"birthday\":\"Dec 18, 2014 3:59:45 PM\",\"address\":\"湖北随州\",\"senior\":\"一月 1, 1970\"}]",new TypeToken<List<Student>>(){}.getType());
List<Student> list2=g.fromJson(exList,new TypeToken<List<Student>>(){}.getType());
for(Student ss:list1){
System.out.println("id:"+ss.getId());
} for(Student ss:list2){
System.out.println("id:"+ss.getId());
} //把json转化为Map
Map<String,String> m=g.fromJson(exMap,new TypeToken<Map<String,String>>(){}.getType());
for(String ms:map.keySet()){
//key---->value
System.out.println(ms+"--->"+map.get(ms));
}
//http://blog.csdn.net/lk_blog/article/details/7685210链接上有更加详细的解析,我这里只是日常用的
} }
(二):阿里巴巴的解析方式
package org.wh.JsonDemo; import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; public class AliJsonDemo { public static void main(String[] args) {
Student s1=new Student(1,"mahone","男",23,"湖北随州",new Date(),new java.sql.Date(0));
Student s2=new Student(2,"mouse","男",23,"湖北随州",new Date(),new java.sql.Date(0));
Student s3=new Student(3,"moon","女",23,"湖北随州安居",new Date(),new java.sql.Date(0));
Student s4=new Student(4,"mahone1","男",23,"湖北随州",new Date(),new java.sql.Date(0));
Student s5=new Student(5,"mahone2","男",23,"湖北随州",new Date(),new java.sql.Date(0)); Student1 s11=new Student1(1,"mahone","男",23,"湖北随州",new Date());
Student1 s22=new Student1(2,"mouse","男",23,"湖北随州",new Date());
Student1 s33=new Student1(3,"moon","女",23,"湖北随州安居",new Date());
Student1 s44=new Student1(3,"moon","女",23,"湖北随州安居",new Date());
Student1 s55=new Student1(3,"moon","女",23,"湖北随州安居",new Date()); List<Student> list=new ArrayList<Student>();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5); Map<String,String> map=new HashMap<String,String>();
Map<String,Student1> map1=new HashMap<String,Student1>();
map.put("a", "aa");
map.put("b", "bb");
map.put("c", "cc");
map.put("d", "dd");
map.put("e", "ee"); map1.put("a",s11);
map1.put("b",s22);
map1.put("c",s33);
map1.put("d",s44);
map1.put("e",s55); //--------------------阿里巴巴的json String aliInfo=JSON.toJSONString(s1);
System.out.println("阿里巴巴转换单个对象的json格式:"+aliInfo); String aliList=JSON.toJSONString(list);
System.out.println("阿里巴巴转换List对象的json的格式"+aliList); String aliMap=JSON.toJSONString(map);
System.out.println("阿里巴巴转换map对象的json的个格式"+aliMap); //单个对象的反序列化
Student ss=JSON.parseObject(aliInfo,Student.class);
System.out.println(ss.getId()+"-->"+ss.getName()); //将Json转换为List
List<Student> ls=JSON.parseArray(aliList,Student.class);
System.out.println(ls);
for(Student su:ls){
System.out.println("id的值"+su.getId());
} //将map转化为
String aliMap1=JSON.toJSONString(map1);
JSONObject jo=JSON.parseObject(aliMap1);
System.out.println("获取"+jo.getString("a"));
System.out.println("获取"+jo.getObject("a", Student.class).getId()); } }
最后一种,我在写的时候老是报错,现在不知道是由于里面有日期还是由于加了日期使得整个对象变得复杂了的鱼那样。还是把代码加上,没有完整
package org.wh.JsonDemo; import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class StrutsJsonDemo {
public static void main(String args[]){
Student1 s1=new Student1(1,"mahone","男",23,"湖北随州",new Date());
Student1 s2=new Student1(2,"mouse","男",23,"湖北随州",new Date());
Student1 s3=new Student1(3,"moon","女",23,"湖北随州安居",new Date());
Student1 s4=new Student1(4,"mahone1","男",23,"湖北随州",new Date());
Student1 s5=new Student1(5,"mahone2","男",23,"湖北随州",new Date()); List<Student1> list=new ArrayList<Student1>();
list.add(s1);
list.add(s2);
// list.add(s3);
// list.add(s4);
// list.add(s5); Map<String,String> map=new HashMap<String,String>();
map.put("a", "aa");
map.put("b", "bb");
map.put("c", "cc");
map.put("d", "dd");
map.put("e", "ee"); //将list转换为json数据
JSONArray listTojson=JSONArray.fromObject(list);
System.out.println("将list转换为json:"+listTojson); //将json转换为List
JSONObject jsonObject=JSONObject.fromObject(listTojson.toString());
JSONArray jsonArray = new JSONArray();
Object o=JSONArray.toList(jsonArray,Student1.class);
System.out.println(o);
出现的bug如下:
将list转换为json:[{"address":"湖北随州","age":23,"birthday":{"date":18,"day":4,"hours":18,"minutes":24,"month":11,"seconds":49,"time":1418898289977,"timezoneOffset":-480,"year":114},"id":1,"name":"mahone","senior":null,"sex":"男"},{"address":"湖北随州","age":23,"birthday":{"date":18,"day":4,"hours":18,"minutes":24,"month":11,"seconds":49,"time":1418898289977,"timezoneOffset":-480,"year":114},"id":2,"name":"mouse","senior":null,"sex":"男"}]
Exception in thread "main" net.sf.json.JSONException: A JSONObject text must begin with '{' at character 1 of [{"address":"湖北随州","age":23,"birthday":{"date":18,"day":4,"hours":18,"minutes":24,"month":11,"seconds":49,"time":1418898289977,"timezoneOffset":-480,"year":114},"id":1,"name":"mahone","senior":null,"sex":"男"},{"address":"湖北随州","age":23,"birthday":{"date":18,"day":4,"hours":18,"minutes":24,"month":11,"seconds":49,"time":1418898289977,"timezoneOffset":-480,"year":114},"id":2,"name":"mouse","senior":null,"sex":"男"}]
at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:505)
at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1144)
at net.sf.json.JSONObject._fromString(JSONObject.java:1373)
at net.sf.json.JSONObject.fromObject(JSONObject.java:161)
at net.sf.json.JSONObject.fromObject(JSONObject.java:130)
at org.wh.JsonDemo.StrutsJsonDemo.main(StrutsJsonDemo.java:40)
这里的日期又成了对象,所以我觉得很可能是这个日期变得复杂了才使得其解析不了,下篇在仔细看看。
三:总结
做了决定,下了决心就得主动动手来做了。自己做了才知道是怎么回事,所以必须的做。前段时间看了《匆匆那年》,挺感慨的,我的青春一去不复回啊,还是想起了高总时刻,特别是高一啊。MouseMoon。电影最后的那句”不悔梦归处,只恨太匆匆“啊!错过就是一辈子啊。
3中转换JSON数据的方式的更多相关文章
- C#的百度地图开发(二)转换JSON数据为相应的类
原文:C#的百度地图开发(二)转换JSON数据为相应的类 在<C#的百度地图开发(一)发起HTTP请求>一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON ...
- java读取url中json文件中的json数据
有时候需要远程从其他接口中获取json数据,如果遇到返回的json数据是一个文件而不直接是数据,那么可以通过以下方法进行读取: /** * 从数据接口获取到数据 * @return * @throws ...
- js声明json数据,打印json数据,遍历json数据,转换json数据为数组
1.js声明json数据: 2.打印json数据: 3.遍历json数据: 4.转换json数据为数组; //声明JSON var json = {}; json.a = 1; //第一种赋值方式(仿 ...
- 关于mysql中存储json数据的读取问题
在mysql中存储json数据,字段类型用text,java实体中用String接受. 返回前端时(我这里返回前端的是一个map),为了保证读取出的数据排序错乱问题,定义Map时要用LinkedHas ...
- JMeter 中对于Json数据的处理方法
JMeter中对于Json数据的处理方法 http://eclipsesource.com/blogs/2014/06/12/parsing-json-responses-with-jmeter/ J ...
- [转]EntityFramework中常用的数据修改方式
本文转自:http://blog.csdn.net/itmaxin/article/details/47662151 上一篇文章里提到了 EntityFramework中常用的数据删除方式,那么修改对 ...
- 截取HTML中的JSON数据并利用GSON进行解析(Android)
截取HTML中的JSON数据并利用GSON进行解析(Android) 前言 最近在做的一个Android项目,需要自行搭建服务器,队友选择买了阿里云的服务器ESC产品,在数据获取上,我们采用了Andr ...
- vue中引入json数据,不用本地请求
1.我的项目结构,需要在Daily.vue中引入daily.js中的json数据 2.把json数据放入一个js文件中,用exports导出,vscode的json格式太严格了,很多数据,调了一个多小 ...
- ASP.NET Core中返回 json 数据首字母大小写问题
ASP.NET Core中返回 json 数据首字母大小写问题 在asp.net core中使用ajax请求动态绑定数据时遇到该问题 后台返回数据字段首字母为定义的大写,返回的数据没有问题 但是在前台 ...
随机推荐
- Sqoop帮助文档
1.列出MySql数据库中的所有数据库 $ sqoop list-databases --connect jdbc:mysql://192.168.254.105:3306/--username ro ...
- Android面试收集录 OpenGL ES
1.如何用OpenGL ES绘制一个三角形? 编写一个类实现Renderer接口,实现onDrawFrame方法,onSurfaceChanged方法,onSurfaceCreated方法 编写一个类 ...
- 【转】手把手教你:Ubuntu14+apache2+django1.7+python2.7下网页/网站部署
本人亲自尝试了网上众多的部署网页/网站方法,绝大多数都未能试验成功,这次的项目光部署这块遇到了很多问题,大概耗费了我一个星期. 本着:王道论坛中的赠人玫瑰,手留余香的精神.我把自己一路所走的历程发布出 ...
- AWS安装CDH5.3-CentOS6.4
1.下载CM启动文件 [root@ip-172-31-23-107 ec2-user]# wget http://archive.cloudera.com/cm5/installer/latest/c ...
- Vm-Ubuntu下配置Qt开发环境
在昨天的Ubuntu换降下,安装Qt发现编译的时候是缺少opengl的 奈何找了好多方式都无法安装opengl 今天看到另一位大神写的,才发下自己找的还是有问题 大神帖子网址:http://blog. ...
- 《python核心编程第二版》第4章习题
4–1. Python 对象.与所有 Python 对象有关的三个属性是什么?请简单的
- Git的使用和部署
Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). 什么是版本控制系统? 没有版本控制系统 有了版本控制系统 版本 文件名 用户 说明 日期 1 service.doc 张三 ...
- HDU 3696 Farm Game(拓扑+DP)(2010 Asia Fuzhou Regional Contest)
Description “Farm Game” is one of the most popular games in online community. In the community each ...
- 甲级1002 A+B for Polynomials (25)
题目描述: This time, you are supposed to find A+B where A and B are two polynomials. Input Each input fi ...
- windows bat批处理基础命令学习教程(转载)
一.基础语法: 1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令.可以使用任何文本文件编辑工具创建和修改.2.批处理是一种简单的程序,可以用 if 和 goto 来控 ...