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请求动态绑定数据时遇到该问题 后台返回数据字段首字母为定义的大写,返回的数据没有问题 但是在前台 ...
随机推荐
- python linecache读取过程
最近使用Python编写日志处理脚本时,对Python的几种读取文件的方式进行了实验.其中,linecache的行为引起了我的注意. Python按行读取文件的经典方式有以下几种: with open ...
- javascript的优美与鸡肋
--总结来自:<javascript语言精粹> 任何语言都有其优美的地方和其鸡肋的地方.避归一些语言的糟粕,能相应的降低bug出现的几率. 优美处: 函数是头等对象 基于原型继承的动态对象 ...
- Freemarker 的 Shiro 标签使用详解
一.引入依赖(已解决版本冲突) <!-- shiro-freemarker-tags start --> <dependency> <groupId>net.min ...
- 从底层带你理解Python中的一些内部机制
下面博文将带你创建一个字节码级别的追踪API以追踪Python的一些内部机制,比如类似YIELDVALUE.YIELDFROM操作码的实现,推式构造列表(List Comprehensions).生成 ...
- 输出不重复的质因数(C++)
[问题描述] 从键盘上输入一个大于 1 的正整数,输出它所有不等的质因数.(什么是质因数?既是质数,又是因数) [代码展示] # include<iostream>using namesp ...
- LeetCode 61——旋转链表
1. 题目 2. 解答 2.1. 方法一 将链表每个节点向右移动 1 个位置,其实就是让链表最后一个结点指向第一个结点. 因此,向右移动 k 个位置就重复上述过程 k 次即可. 然后,我们注意到,若链 ...
- Fast-RCNN论文总结整理
此篇博客写作思路是一边翻译英文原文一边总结博主在阅读过程中遇到的问题及一些思考,因为博主本人阅读英文论文水平不高,所以还请大家在看此篇博客的过程中带着批判的眼神阅读!小墨镜带好,有什么不对的地方请在留 ...
- Python3 初识Python
一 Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...
- 望岳物业App开发过程记录
望岳物业APP开发过程记录 ——杜冰青 1.小组讨论,决定模块功能. 2.开始做“社区活动”界面,完成主页面.分享界面.内容界面,但是分享功能暂时没有完成. 3.接着做“一键开门”界面,因为硬件设施跟 ...
- JavaWeb笔记(十二)日志
日志 日志信息根据用途与记录内容的不同,分为调试日志.运行日志.异常日志等. Java常用记录日志 logger log4j log4j2 logback 其中除了logger使用的概率较小,因此主要 ...