JSON与JAVA数据的相互转换
http://www.cnblogs.com/linjiqin/archive/2011/09/19/2181408.html
- import net.sf.json.JSONArray;
- import net.sf.json.JSONException;
- import net.sf.json.JSONObject;
- import net.sf.json.JSONSerializer;
- /**
- * json对象转换为java对象
- *
- * @throws JSONException
- */
- @Test
- public void jsonToJava(){
- String json="[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
- //接收{}对象,此处接收数组对象会有异常
- if(json.indexOf("[")!=-1){
- json=json.replace("[", "");
- }
- if(json.indexOf("]")!=-1){
- json=json.replace("]", "");
- }
- JSONObject obj=new JSONObject().fromObject(json);
- SimInfo simInfo=(SimInfo)JSONObject.toBean(obj, SimInfo.class);
- System.out.println("obj: "+simInfo);
- System.out.println(simInfo.getAddTime());
- System.out.println(simInfo.getIccid());
- System.out.println(simInfo.getImei());
- System.out.println(simInfo.getImsi());
- System.out.println(simInfo.getPhoneType());
- System.out.println(simInfo.getRemark());
- System.out.println(simInfo.getTel());
- System.out.println(simInfo.getId());
- DaoFactory.getSimInfoDao().add(simInfo);
- }
- /**
- * 将json转换为java集合对象
- */
- @Test
- public void jsonToJavas(){
- String jsons="[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}," +
- "{\"addTime\":\"2011-11-11 14:23:02\",\"iccid\":\"2222\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
- List<SimInfo> simInfos = getJavaCollection(new SimInfo(),jsons);
- System.out.println(simInfos.size());
- for(SimInfo simInfo:simInfos){
- System.out.println("addTime: "+simInfo.getAddTime());
- System.out.println("=========");
- }
- }
- /**
- * 封装将json对象转换为java集合对象
- *
- * @param <T>
- * @param clazz
- * @param jsons
- * @return
- */
- private <T> List<T> getJavaCollection(T clazz, String jsons) {
- List<T> objs=null;
- JSONArray jsonArray=(JSONArray)JSONSerializer.toJSON(jsons);
- if(jsonArray!=null){
- objs=new ArrayList<T>();
- List list=(List)JSONSerializer.toJava(jsonArray);
- for(Object o:list){
- JSONObject jsonObject=JSONObject.fromObject(o);
- T obj=(T)JSONObject.toBean(jsonObject, clazz.getClass());
- objs.add(obj);
- }
- }
- return objs;
- }
- /**
- * java对象转换为json对象
- *
- * @throws JSONException
- */
- @Test
- public void javaToJson(){
- SimInfo simInfo=new SimInfo();
- simInfo.setAddTime(UtilTool.dateToStr(new Date(), null));
- simInfo.setIccid("1111");
- simInfo.setImei("2222");
- simInfo.setImsi("3333");
- simInfo.setPhoneType(4);
- simInfo.setRemark("aaaa");
- simInfo.setTel("5555");
- //java对象转换为json对象
- String json=new JSONArray().fromObject(simInfo).toString();
- //json: [{"addTime":"2011-09-19 14:23:02","iccid":"1111","id":0,"imei":"2222","imsi":"3333","phoneType":"4444","remark":"aaaa","tel":"5555"}]
- System.out.println("json: "+json);
- }
jackson-core-asl-1.7.2.jar
jackson-mapper-asl-1.7.2.jar
- //将一个Java对象转换成JSON
- StringWriter writer = new StringWriter();
- ObjectMapper mapper = new ObjectMapper();
- mapper.writeValue(writer, simInfo);
- String json=writer.toString();
- 基于json-lib.jar包Json实例程序
- 1.JSONObject to DynaBean
- String json = "{name=\"json\",bool:true,int:1,double:2.2}";
- JSONObject jsonObject = JSONObject.fromObject(json);
- //抽象的写法:DynaBean bean = (DynaBean) JSONSerializer.toJava( jsonObject );
- Object bean = JSONObject.toBean(jsonObject);
- //Object bean1 = JSONSerializer.toJava(jsonObject);
- assertEquals(jsonObject.get("name"), PropertyUtils.getProperty(bean, "name"));
- assertEquals(jsonObject.get("bool"), PropertyUtils.getProperty(bean, "bool"));
- assertEquals(jsonObject.get("int"), PropertyUtils.getProperty(bean, "int"));
- assertEquals(jsonObject.get("double"), PropertyUtils.getProperty(bean, "double"));
- 2.JSONObject to JavaBean
- String json = "{name:\"zhangsan\",age:25,hight:1.72,sex:true}";
- JSONObject jsonObject = JSONObject.fromObject(json);
- UserBean bean = (UserBean) JSONObject.toBean(jsonObject, UserBean.class);
- System.out.println(jsonObject);
- 理论上,这样就可以了,但时,有异常Caused by: java.lang.NoSuchMethodException: com.json.Json$UserBean.<init>()
- 3.JSONArray to List
- String json = "[\"first\",\"second\"]";
- JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
- List output = (List) JSONSerializer.toJava(jsonArray);
- 4.JSONArray to array
- String json = "[\"first\",\"second\"]";
- JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
- JsonConfig jsonConfig = new JsonConfig();
- jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
- Object[] output = (Object[]) JSONSerializer.toJava(jsonArray, jsonConfig);
- Object[] expected = new Object[] { "first", "second" };
- ArrayAssertions.assertEquals(expected, output);
- 5.JSON 字符串 专为 JavaBean(刘慧斌demo 演示需要的jar包在附件里)
- String str="[{\"id\":\"328\",\"mestype\":\"inbox\"},{\"id\":\"327\",\"mestype\":\"inbox\"},{\"id\":\"279\",\"mestype\":\"already\"},{\"id\":\"278\",\"mestype\":\"already\"},{\"id\":\"277\",\"mestype\":\"already\"},{\"id\":\"310\",\"mestype\":\"inbox\"},{\"id\":\"308\",\"mestype\":\"inbox\"},{\"id\":\"305\",\"mestype\":\"inbox\"},{\"id\":\"304\",\"mestype\":\"inbox\"},{\"id\":\"303\",\"mestype\":\"inbox\"}]";
- JSONArray jsonArray=(JSONArray) JSONSerializer.toJSON(str);
- List list=(List)JSONSerializer.toJava(jsonArray);
- for (Object obj: list) {
- JSONObject jsonObject = JSONObject.fromObject(obj);
- MessageBean bean = (MessageBean) JSONObject.toBean(jsonObject, MessageBean.class);
- String id=bean.getId()+"";
- String type=bean.getMestype();
- System.out.println(id+" "+type);
- }
- System.out.println(list.size());
JSON与JAVA数据的相互转换的更多相关文章
- json学习系列(8)JSON与JAVA数据的相互转换实例
一.完整案例 先定义一个java实体对象,如下: package com.pcitc.json.cnblog; /** * SimInfo实体对象 * * @Description * @author ...
- JSONObject.fromObject(map)(JSON与JAVA数据的转换)
JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 上一篇文章中有这么 ...
- 转载:JSONObject.fromObject(map)(JSON与JAVA数据的转换)
转载网址:http://blog.sina.com.cn/s/blog_821025b70100wh6v.html JSON与JAVA数据的转换(JSON 即 JavaScript Object Na ...
- JSON与JAVA数据的转换-----从3,23到现在5.25才过去2个月,感觉时间过得那么漫长
从3月23号去报到,期间经历了清明节,毕业论文答辩,从万达搬到东兴,五一节,毕业照,从东兴的一边搬到另外一个房间中去 2个月的时间过得如此的快啊!白驹过隙! 不要着急,不要和别人比,小龙哥写过3年代码 ...
- JSON与JAVA数据的转换
1. List集合转换成json代码 List list = new ArrayList(); list.add( "first" ); list.add( "sec ...
- json和java bean的相互转换(使用fastjson)
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifac ...
- android开发中json与java对象相互转换
json与java对象的相互转换.(使用com.google.gson) 在Android开发过程中,客户端总是需要从服务器获取数据,包括XML和json格式,目前json格式的数据使用较为普遍,所以 ...
- JSON数据与Java对象的相互转换
JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...
- JSON数据和Java对象的相互转换
JSON解析器: 常见的解析器: Jsonlib, Gson, fastjson, jackson 其中应用最广泛的是jackson,阿里的fastjson虽然比jackson快一点,但存在的问题比较 ...
随机推荐
- js amd
http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_definition.html http://www.adequatelygood ...
- [jobdu]扑克牌顺子
一开始看到题还以为要DFS还是BFS,后来发现完全不用.排个序,然后看看大小王能不能弥补缺口就行,但后来又发现还要排除有相同大小牌的情况. #include <iostream> #inc ...
- Android 应用程序窗口化
Android 应用程序窗口化与 Store 应用程序窗口化-Android,Windows,better,chrome,archon-远景-Win8|Win8.1|Windows8.1|Win10| ...
- Java按位置解析文本文件(使用Swing选择文件)
工作中遇到这样的一个需求,按位置解析一些文本文件,它们由头部.详情.尾部组成,并且每一行的长度可能不一样,每一行代表的意思也可能不一样,但是每一行各个位置代表的含义已经确定了. 例如有下面这样一段文本 ...
- python属性查找
python中执行obj.attr时,将调用特殊方法obj.__getattribute__('attr'),该方法执行搜索来查找该属性,通常涉及检查特性.查找实例字典.查找类字典以及搜索基类.如果搜 ...
- 手势识别官方教程(6)识别拖拽手势用GestureDetector.SimpleOnGestureListener和onTouchEvent
三种现实drag方式 1,在3.0以后可以直接用 View.OnDragListener (在onTouchEvent中调用某个view的startDrag()) 2,onTouchEvent() ...
- poj2761Feed the dogs(划分树-区间K值)
链接 这树着实不好理解啊 讲解http://www.cnblogs.com/pony1993/archive/2012/07/17/2594544.html 对于找K值 右区间的确定不是太理解..先当 ...
- POJ_1269_Intersecting_Lines_(计算几何基础)
描述 http://poj.org/problem?id=1269 给出两条直线,判断它们是平行,重合,还是相交,如果相交,求出交点. 分析 比较裸的一道题.学习了直线的写法(参数方程) #inclu ...
- apache开源项目--nutch
Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. Nutch的创始人是Doug Cutting,他同时也是Lucene.Hado ...
- 【HTML5】Canvas之globalCompositeOperation属性详解
globalCompositeOperation即Canvas中的合成操作. 1.source-over 这是默认值,他表示绘制的图形将画在现有画布之上 <!DOCTYPE html> & ...