http://www.cnblogs.com/linjiqin/archive/2011/09/19/2181408.html

  1. import net.sf.json.JSONArray;
  2. import net.sf.json.JSONException;
  3. import net.sf.json.JSONObject;
  4. import net.sf.json.JSONSerializer;
  5.  
  6. /**
  7. * json对象转换为java对象
  8. *
  9. * @throws JSONException
  10. */
  11. @Test
  12. public void jsonToJava(){
  13. String json="[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
  14. //接收{}对象,此处接收数组对象会有异常
  15. if(json.indexOf("[")!=-1){
  16. json=json.replace("[", "");
  17. }
  18. if(json.indexOf("]")!=-1){
  19. json=json.replace("]", "");
  20. }
  21. JSONObject obj=new JSONObject().fromObject(json);
  22. SimInfo simInfo=(SimInfo)JSONObject.toBean(obj, SimInfo.class);
  23. System.out.println("obj: "+simInfo);
  24. System.out.println(simInfo.getAddTime());
  25. System.out.println(simInfo.getIccid());
  26. System.out.println(simInfo.getImei());
  27. System.out.println(simInfo.getImsi());
  28. System.out.println(simInfo.getPhoneType());
  29. System.out.println(simInfo.getRemark());
  30. System.out.println(simInfo.getTel());
  31. System.out.println(simInfo.getId());
  32.  
  33. DaoFactory.getSimInfoDao().add(simInfo);
  34. }
  35.  
  36. /**
  37. * 将json转换为java集合对象
  38. */
  39. @Test
  40. public void jsonToJavas(){
  41. String jsons="[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}," +
  42. "{\"addTime\":\"2011-11-11 14:23:02\",\"iccid\":\"2222\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
  43. List<SimInfo> simInfos = getJavaCollection(new SimInfo(),jsons);
  44. System.out.println(simInfos.size());
  45. for(SimInfo simInfo:simInfos){
  46. System.out.println("addTime: "+simInfo.getAddTime());
  47. System.out.println("=========");
  48. }
  49.  
  50. }
  51.  
  52. /**
  53. * 封装将json对象转换为java集合对象
  54. *
  55. * @param <T>
  56. * @param clazz
  57. * @param jsons
  58. * @return
  59. */
  60. private <T> List<T> getJavaCollection(T clazz, String jsons) {
  61. List<T> objs=null;
  62. JSONArray jsonArray=(JSONArray)JSONSerializer.toJSON(jsons);
  63. if(jsonArray!=null){
  64. objs=new ArrayList<T>();
  65. List list=(List)JSONSerializer.toJava(jsonArray);
  66. for(Object o:list){
  67. JSONObject jsonObject=JSONObject.fromObject(o);
  68. T obj=(T)JSONObject.toBean(jsonObject, clazz.getClass());
  69. objs.add(obj);
  70. }
  71. }
  72. return objs;
  73. }
  74.  
  75. /**
  76. * java对象转换为json对象
  77. *
  78. * @throws JSONException
  79. */
  80. @Test
  81. public void javaToJson(){
  82. SimInfo simInfo=new SimInfo();
  83. simInfo.setAddTime(UtilTool.dateToStr(new Date(), null));
  84. simInfo.setIccid("1111");
  85. simInfo.setImei("2222");
  86. simInfo.setImsi("3333");
  87. simInfo.setPhoneType(4);
  88. simInfo.setRemark("aaaa");
  89. simInfo.setTel("5555");
  90. //java对象转换为json对象
  91. String json=new JSONArray().fromObject(simInfo).toString();
  92. //json: [{"addTime":"2011-09-19 14:23:02","iccid":"1111","id":0,"imei":"2222","imsi":"3333","phoneType":"4444","remark":"aaaa","tel":"5555"}]
  93. System.out.println("json: "+json);
  94. }

jackson-core-asl-1.7.2.jar

jackson-mapper-asl-1.7.2.jar

  1. //将一个Java对象转换成JSON
  2. StringWriter writer = new StringWriter();
  3. ObjectMapper mapper = new ObjectMapper();
  4. mapper.writeValue(writer, simInfo);
  5. String json=writer.toString();
  1. 基于json-lib.jarJson实例程序
  2. 1.JSONObject to DynaBean
  3. String json = "{name=\"json\",bool:true,int:1,double:2.2}";
  4. JSONObject jsonObject = JSONObject.fromObject(json);
  5. //抽象的写法:DynaBean bean = (DynaBean) JSONSerializer.toJava( jsonObject );
  6. Object bean = JSONObject.toBean(jsonObject);
  7. //Object bean1 = JSONSerializer.toJava(jsonObject);
  8. assertEquals(jsonObject.get("name"), PropertyUtils.getProperty(bean, "name"));
  9. assertEquals(jsonObject.get("bool"), PropertyUtils.getProperty(bean, "bool"));
  10. assertEquals(jsonObject.get("int"), PropertyUtils.getProperty(bean, "int"));
  11. assertEquals(jsonObject.get("double"), PropertyUtils.getProperty(bean, "double"));
  12.  
  13. 2.JSONObject to JavaBean
  14. String json = "{name:\"zhangsan\",age:25,hight:1.72,sex:true}";
  15. JSONObject jsonObject = JSONObject.fromObject(json);
  16. UserBean bean = (UserBean) JSONObject.toBean(jsonObject, UserBean.class);
  17. System.out.println(jsonObject);
  18. 理论上,这样就可以了,但时,有异常Caused by: java.lang.NoSuchMethodException: com.json.Json$UserBean.<init>()
  19.  
  20. 3.JSONArray to List
  21. String json = "[\"first\",\"second\"]";
  22. JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
  23. List output = (List) JSONSerializer.toJava(jsonArray);
  24.  
  25. 4.JSONArray to array
  26. String json = "[\"first\",\"second\"]";
  27. JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
  28. JsonConfig jsonConfig = new JsonConfig();
  29. jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
  30. Object[] output = (Object[]) JSONSerializer.toJava(jsonArray, jsonConfig);
  31. Object[] expected = new Object[] { "first", "second" };
  32. ArrayAssertions.assertEquals(expected, output);
  33.  
  34. 5.JSON 字符串 专为 JavaBean(刘慧斌demo 演示需要的jar包在附件里)
  35.  
  36. 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\"}]";
  37. JSONArray jsonArray=(JSONArray) JSONSerializer.toJSON(str);
  38. List list=(List)JSONSerializer.toJava(jsonArray);
  39. for (Object obj: list) {
  40. JSONObject jsonObject = JSONObject.fromObject(obj);
  41. MessageBean bean = (MessageBean) JSONObject.toBean(jsonObject, MessageBean.class);
  42. String id=bean.getId()+"";
  43. String type=bean.getMestype();
  44. System.out.println(id+" "+type);
  45. }
  46. System.out.println(list.size());

JSON与JAVA数据的相互转换的更多相关文章

  1. json学习系列(8)JSON与JAVA数据的相互转换实例

    一.完整案例 先定义一个java实体对象,如下: package com.pcitc.json.cnblog; /** * SimInfo实体对象 * * @Description * @author ...

  2. JSONObject.fromObject(map)(JSON与JAVA数据的转换)

    JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 上一篇文章中有这么 ...

  3. 转载:JSONObject.fromObject(map)(JSON与JAVA数据的转换)

    转载网址:http://blog.sina.com.cn/s/blog_821025b70100wh6v.html JSON与JAVA数据的转换(JSON 即 JavaScript Object Na ...

  4. JSON与JAVA数据的转换-----从3,23到现在5.25才过去2个月,感觉时间过得那么漫长

    从3月23号去报到,期间经历了清明节,毕业论文答辩,从万达搬到东兴,五一节,毕业照,从东兴的一边搬到另外一个房间中去 2个月的时间过得如此的快啊!白驹过隙! 不要着急,不要和别人比,小龙哥写过3年代码 ...

  5. JSON与JAVA数据的转换

      1. List集合转换成json代码 List list = new ArrayList(); list.add( "first" ); list.add( "sec ...

  6. json和java bean的相互转换(使用fastjson)

    <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifac ...

  7. android开发中json与java对象相互转换

    json与java对象的相互转换.(使用com.google.gson) 在Android开发过程中,客户端总是需要从服务器获取数据,包括XML和json格式,目前json格式的数据使用较为普遍,所以 ...

  8. JSON数据与Java对象的相互转换

    JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...

  9. JSON数据和Java对象的相互转换

    JSON解析器: 常见的解析器: Jsonlib, Gson, fastjson, jackson 其中应用最广泛的是jackson,阿里的fastjson虽然比jackson快一点,但存在的问题比较 ...

随机推荐

  1. js amd

    http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_definition.html http://www.adequatelygood ...

  2. [jobdu]扑克牌顺子

    一开始看到题还以为要DFS还是BFS,后来发现完全不用.排个序,然后看看大小王能不能弥补缺口就行,但后来又发现还要排除有相同大小牌的情况. #include <iostream> #inc ...

  3. Android 应用程序窗口化

    Android 应用程序窗口化与 Store 应用程序窗口化-Android,Windows,better,chrome,archon-远景-Win8|Win8.1|Windows8.1|Win10| ...

  4. Java按位置解析文本文件(使用Swing选择文件)

    工作中遇到这样的一个需求,按位置解析一些文本文件,它们由头部.详情.尾部组成,并且每一行的长度可能不一样,每一行代表的意思也可能不一样,但是每一行各个位置代表的含义已经确定了. 例如有下面这样一段文本 ...

  5. python属性查找

    python中执行obj.attr时,将调用特殊方法obj.__getattribute__('attr'),该方法执行搜索来查找该属性,通常涉及检查特性.查找实例字典.查找类字典以及搜索基类.如果搜 ...

  6. 手势识别官方教程(6)识别拖拽手势用GestureDetector.SimpleOnGestureListener和onTouchEvent

    三种现实drag方式 1,在3.0以后可以直接用 View.OnDragListener (在onTouchEvent中调用某个view的startDrag()) 2,onTouchEvent()  ...

  7. poj2761Feed the dogs(划分树-区间K值)

    链接 这树着实不好理解啊 讲解http://www.cnblogs.com/pony1993/archive/2012/07/17/2594544.html 对于找K值 右区间的确定不是太理解..先当 ...

  8. POJ_1269_Intersecting_Lines_(计算几何基础)

    描述 http://poj.org/problem?id=1269 给出两条直线,判断它们是平行,重合,还是相交,如果相交,求出交点. 分析 比较裸的一道题.学习了直线的写法(参数方程) #inclu ...

  9. apache开源项目--nutch

    Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. Nutch的创始人是Doug Cutting,他同时也是Lucene.Hado ...

  10. 【HTML5】Canvas之globalCompositeOperation属性详解

    globalCompositeOperation即Canvas中的合成操作. 1.source-over 这是默认值,他表示绘制的图形将画在现有画布之上 <!DOCTYPE html> & ...