一、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字符串

【代码示例】

 List<Map> rtnMapList = new ArrayList<Map>()
String cSrc = JSONArray.toJSON(paramMapList).toString();
LogUtil.getLogger().info("JSONArray.toJSON()方法,将Java对象转化成JSON串之后的结果:"+cSrc);

【运行结果】

===========原List<Map>结构数据:==========

 [{acDate=2016-06-15,targetTableName=t_acc_subject_provision},{acDate=2016-06-16,targetTableName=t_acc_subject_provision}]

===========JSONArray.toJSON()方法之后的结果:==========

 [{"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>对象。

【代码示例】

 @RequestMapping( value = "testFacade")
public void testFacade(HttpServletRequest request, HttpServletResponse response){
String paramStr = "";
try {
InputStream inStream = request.getInputStream();
//(1)解密参数
paramStr = CheckMsg.check(inStream);
//(2)将参数从JSON格式转化成List<Map>类型。
List<Map> paramMapList = JSONArray.parseArray(paramStr, Map.class); //2.返回空Response,防止响应阻塞。
HttpUtil.httpResponse("", response);
} catch (Exception e) {
e.printStackTrace();
}
}

【运行结果】

===========原JSON字符串:==========

 [{"acDate":"2016-06-15","targetTableName":"t_acc_subject_provision"},{"acDate":"2016-06-16","targetTableName":"t_acc_subject_provision"}]

===========将JSON转化成List<Map>结构后的数据:==========

 [{acDate=2016-06-15,targetTableName=t_acc_subject_provision},
{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/

【JSON】JSON字符串的操作(不断积累中)的更多相关文章

  1. php大力力 [024节]PHP中的字符串连接操作(2015-08-27)

    2015-08-27 php大力力024.PHP中的字符串连接操作 PHP中的字符串连接操作  阅读:次   时间:2012-03-25 PHP字符串的连接的简单实例 时间:2013-12-30 很多 ...

  2. LoadRunner中字符串的操作

    LoadRunner中字符串的操作 LoadRunner中常用的字符串操作函数有:                strcpy(destination_string, source_string); ...

  3. json和字符串/数组/集合的互相转换の神操作总结

    一:前端字符串转JSON的4种方式 1,eval方式解析,恐怕这是最早的解析方式了. function strToJson(str){ var json = eval('(' + str + ')') ...

  4. Python中json的简单读写操作

    Python中json的简单读写操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...

  5. java中json和字符串互转及日期转换 练习

    一:以下是用到的jar名称: commons-beanutils-1.6.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons- ...

  6. JSON(五)——同步请求中使用JSON格式字符串进行交互(不太常见的用法)

    在同步请求中使用JSON格式进行数据交互的场景并不多,同步请求是浏览器直接与服务器进行数据交互的大多是用jsp的标签jstl和el表达式对请求中的数据进行数据的渲染.我也是在一次开发中要从其它服务器提 ...

  7. JSON(二)——JavaScript中js对象与JSON格式字符串的相互转换

    首先我们来看一下js中JSON格式的字符串 var JSONStr1 = "{\"name\" : \"张三\"}"; 注意以下的写法不是j ...

  8. json数据格式字符串在java中的转移

    说明:项目中遇到请求的json数据字符串,打印出来没有问题,但是想加入到代码中,就需要进行转移 原数据为(用src代替)(没有写完): {"adjust_fee":"0. ...

  9. 在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串)

    原文:在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  10. 前台页面中json和字符串相互转化

    比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex":"男&quo ...

随机推荐

  1. Linux同步机制 - 多线程开发总结

    1 对于CPU开销大的场景,能利用多核,就尽量利用多核(常常自以为某需求的运算量不大,且CPU足够快,就偷懒写个单线程,结果效率很低) 2 使用多线程的时候,默认是加锁的.在加锁保证业务正常的条件下, ...

  2. 基于Linux的oracle数据库管理 part3( 存储 网络 常用命令 )

    主要内容 1. 常用存储模式 2. 配置网络 3. 维护指令 常用存储模式 - 文件系统 优点:管理方便, 缺点:读写慢 - 裸设备 只没有被格式化和挂载的磁盘, 只能有程序直接访问, 不能被操作系统 ...

  3. linux 多处理器概念

    Linux 提出了 Multi-Processing 的概念,它的调度器可以将操作系统的线程均分到各个核(或硬件线程)上去执行,以此达到并行计算的目的,从而也可以极大地提高系统的性能. 实现计数器 1 ...

  4. js中encode、decode的应用说明

    escape 方法 返回一个可在所有计算机上读取的编码 String 对象. function escape(charString : String) : String 参数 charString 必 ...

  5. HDU 1525 (博弈) Euclid's Game

    感觉这道题用PN大法好像不顶用了,可耻地看了题解. 考虑一下简单的必胜状态,某一个数是另一个数的倍数的时候是必胜状态. 从这个角度考虑一下:游戏进行了奇数步还是偶数步决定了哪一方赢. 如果b > ...

  6. 14.Object-C--浅谈Foundation框架字符串NSString 与NSMutableString

    OC的字符串时经常使用到的,今天我对于OC字符串做一个简单的总结,如果有错误之处,麻烦留言指正.感谢! NSString是一个不可变长度的字符串对象.表示它初始化以后,你不能改变该变量所分配的内存中的 ...

  7. 抛弃EF,20分构建一个属于自己的ORM框架

    Poiuyt_cyc 博客园首页新随笔联系订阅管理随笔 - 11  文章 - 0  评论 - 111 抛弃EF,20分构建一个属于自己的ORM框架 相信EF大家都不陌生了,因为数据库表跟程序实体是一一 ...

  8. Microsoft Office 2010 requires 的 MSXML 版本 6.10.1129.0 be 已安装在您计算机的安装"的基于 Windows 7 的计算机上安装 Office 2010 时出现错误消息

    https://support.microsoft.com/zh-cn/kb/2290714

  9. 我常用的VBS方法(QTP)

    这些是4年前在HP用QTP做自动化测试时候总结的一些,现在贴出来,说不准以后会不会用到 当初花了2天时间写的一个自动生成的Excel Report Public Function Report (st ...

  10. duilib让不同的容器使用不同的滚动条样式

    装载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42240569 以前在给一个容器设置横纵向的滚动条时,一直是通过设置xml ...