• 【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/

  • 相关阅读:
    【Coreforces 1253E】
    计数专题乱做
    PKUWC2020乱做
    多项式板子
    notepad
    2021.4.9
    2021.4.8
    2021.3.31
    2021.3.26
    2021.3.25
  • 原文地址:https://www.cnblogs.com/zjrodger/p/4833505.html
Copyright © 2020-2023  润新知