【JSON】JSON字符串的操作(不断积累中)
一、JS遍历JSON串
示例01
目标:返回的JSON串中,一个Key对应的Value是一个数组(若在Java程序中,是一个List)。
现在要求获取每个数组中的第一个对象元素中的name属性的值。
测试代码:
//目标:获取每个列表中,第一个对象元素的name属性值. var result = { 'A': [{ 'name': '111', 'gender': '111male', 'place': '河南' }, { 'name': '222', 'gender': '222female', 'place': '北京' }], 'B': [{ 'name': '333', 'gender': '333male', 'place': '河北' }, { 'name': '444', 'gender': '444male', 'place': '湖南' }, { 'name': '555', 'gender': '555male', 'place': '广西' }] }; for( var key in result){ //方式一: //var oneValue = result[key]; //var name = oneValue[0].name; //console.info(name); //方式二: var name = result[key][0].name; console.info(name); };
运行结果:
111
333
二、Java对象与JSON串的相互转化
(一) 将Java对象转化成JSON字符
工具:fastjson
1、需求01:将List<Map<String, Object>>对象转化成JSON字符串
【代码示例】
1 List<Map> rtnMapList = new ArrayList<Map>() 2 String cSrc = JSONArray.toJSON(paramMapList).toString(); 3 LogUtil.getLogger().info("JSONArray.toJSON()方法,将Java对象转化成JSON串之后的结果:"+cSrc);
【运行结果】
===========原List<Map>结构数据:==========
1 [{acDate=2016-06-15,targetTableName=t_acc_subject_provision},{acDate=2016-06-16,targetTableName=t_acc_subject_provision}]
===========JSONArray.toJSON()方法之后的结果:==========
1 [{"acDate":"2016-06-15","targetTableName":"t_acc_subject_provision"},{"acDate":"2016-06-16","targetTableName":"t_acc_subject_provision"}]
(二) 将JSON字符串转化成Java对象 [fastjson]
工具:fastjson
1、需求01:将JSON字符串转化为List<Map>对象。
【代码示例】
1 @RequestMapping( value = "testFacade") 2 public void testFacade(HttpServletRequest request, HttpServletResponse response){ 3 String paramStr = ""; 4 try { 5 InputStream inStream = request.getInputStream(); 6 //(1)解密参数 7 paramStr = CheckMsg.check(inStream); 8 //(2)将参数从JSON格式转化成List<Map>类型。 9 List<Map> paramMapList = JSONArray.parseArray(paramStr, Map.class); 10 11 //2.返回空Response,防止响应阻塞。 12 HttpUtil.httpResponse("", response); 13 } catch (Exception e) { 14 e.printStackTrace(); 15 } 16 }
【运行结果】
===========原JSON字符串:==========
1 [{"acDate":"2016-06-15","targetTableName":"t_acc_subject_provision"},{"acDate":"2016-06-16","targetTableName":"t_acc_subject_provision"}]
===========将JSON转化成List<Map>结构后的数据:==========
1 [{acDate=2016-06-15,targetTableName=t_acc_subject_provision}, 2 {acDate=2016-06-16,targetTableName=t_acc_subject_provision}]
2、需求02:将JSON字符串转化为List<Map<String, Object>>对象。
【代码示例】
1 @RequestMapping( value = "testFacade")
2 public void testFacade(HttpServletRequest request, HttpServletResponse response){
3 String paramStr = "";
4 try {
5 InputStream inStream = request.getInputStream();
6 //(1)解密参数
7 paramStr = CheckMsg.check(inStream);
8 //(2)将参数从JSON格式转化成List<Map>类型。
9 List<Map<String, Object>> paramMapList = JSON.parseObject(rtnJsonStr, new TypeReference<List<Map<String, Object>>>(){});
10
11 //2.返回空Response,防止响应阻塞。
12 HttpUtil.httpResponse("", response);
13 } catch (Exception e) {
14 e.printStackTrace();
15 }
16 }
【运行结果】
===========原JSON字符串:==========
1 [{"acDate":"2016-06-15","targetTableName":"t_acc_subject_provision"},{"acDate":"2016-06-16","targetTableName":"t_acc_subject_provision"}]
===========将JSON转化成List<Map>结构后的数据:==========
1 [{acDate=2016-06-15,targetTableName=t_acc_subject_provision},
2 {acDate=2016-06-16,targetTableName=t_acc_subject_provision}]
【说明】
JSONArray类和JSON类是第三方组件com.alibaba.fastjson中的类,它们的类全路径名分别为:
com.alibaba.fastjson.JSONArray,com.alibaba.fastjson.JSON
【参考资料】
JSONArray的应用:http://www.cnblogs.com/henryxu/archive/2013/03/10/2952738.html
Java解析JSON数据:http://www.cnblogs.com/henryxu/archive/2013/03/10/2952741.html
JSON官网:http://www.json.org/