说起JSON,大家就谈不上陌生了,因为对于数据传输语言,各位只认json,即使有XML语言,但是各位很少用吧。我也是,但是之前用过的json转换工具各种各样,我记忆中有过GSON(google)、fastJSON(阿里巴巴)、jsonlib等等。这次使用的JSONObject

需求一:调用第三方接口返回json字符串,我们自己处理成所需格式的json数据?

  首先调用第三方接口返回的json字符串格式如下:

1 data="{"status":"查询成功","data":{"total":143,"list":[{"exceptionnum":"28","areacn":"余杭区","areaid":"330110000000000000","comnum":"150"},{"exceptionnum":"22","areacn":"拱墅区","areaid":"330105000000000000","comnum":"97"},{"exceptionnum":"22","areacn":"萧山区","areaid":"330109000000000000","comnum":"178"},......]},"code":"1"}"

  其次我们需要处理成我们自己的json数据。首先呢就是需要将字符串数据转成JSONObject对象后,才可以调用它的一系列API方法来处理。

1 JSONObject object = JSONObject.fromObject(data);

  最后根据上面给出的data数据格式分析得出,它的内部数据结构是键值对的形式存储数据的,但是我们在这里需要注意的是,JSONObject获取数据是有讲究的。如果获取之后是一个简单字符串就可以用get或getString方法来获取,比如获取上面的code的值[示例代码一]。如果想获取data中的list集合数据,则不能直接用get或getString方法了,必须用getJSONArray方法来获取,但是这时还得注意层级关系,因为list在data里面的小data中嵌套着,所以得先获取到小data之后然后才能通过小data获取list数据[示例代码二]。

【示例代码一】
1 //String code = object.get("code").toString();
2 String code = object.getString("code");
【示例代码二】
1 JSONArray jsonArray = object.getJSONObject("data").getJSONArray("list");    //获取小data中的list数据
2 total = object.getJSONObject("data").get("total").toString();           //获取小data中的total数据

  需求二:往JSONObject对象中添加属性及属性值,最后将JSONObjecct对象转成json数据返回?

  因为JSONObject对象存储数据的键值对儿的形式来存储的,类似于map集合存储数据,我们最关心的是如何将JSONObject对象转成json格式的字符串返给调用者,代码如下:

@RequestMapping(value = "/jsonObjectTest",method=RequestMethod.GET)
@ResponseBody
public String jsonObjectTest(){
// 拼接返回的json数据
JSONObject returnJson = new JSONObject();
JSONObject dataJson = new JSONObject();
JSONArray dataArray = new JSONArray(); // 模拟接口调用后获得的结果数据
String data = getData();
JSONObject object = JSONObject.fromObject(data); // 获取状态码,如果是1表示调用成功,则获取数据集合和总记录数
// String code = object.get("code").toString();
String code = object.getString("code");
String total = null;
if("1".equals(code)){
JSONArray jsonArray = object.getJSONObject("data").getJSONArray("list");
total = object.getJSONObject("data").get("total").toString();
for(int i=0; i<jsonArray.size(); i++){
String itemStr = jsonArray.get(i).toString();
JSONObject itemObject = JSONObject.fromObject(itemStr);
String id = itemObject.get("id").toString();
String name = itemObject.get("itemName").toString();
String price = itemObject.get("price").toString();
dataJson.put("id", id);
dataJson.put("name", name);
dataJson.put("price", price); dataArray.add(dataJson);
}
}
Map<String,Object> map = new HashMap<String,Object>();
map.put("itemList", dataArray);
map.put("total", total); // 根据APP端返回json数据
String response = "{\"code\":\"200\",\"title\":\"成功\",\"message\":\"成功!\",\"style\":0}";
returnJson.element("data", map);
returnJson.element("response", response); return returnJson.toString();
}

  

JSONObject例子的更多相关文章

  1. JSONObject、JSONArray区别

    json,就是一个键对应一个值,超级简单的一对一关系.现在用到的json那可以层层嵌套啊,刚开始接触的时候,确实有种崩溃的赶脚,不想去理,取个数据还那么麻烦.其实,就跟if else语句一样,如果if ...

  2. java即时通信小例子

    学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是 ...

  3. JSONObject和JSONArray的关系

    JSON字符串的最上一层,肯定是一个JSONObject,JSONObject的下一层,可以包含JSONArray,JSONArray又包含了若干个JSONObject.用例子来说明: package ...

  4. JSON的简单例子

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 下载JSON所需要的jar文件并加入工程后,编写如下代码: package com.hzhi.json; ...

  5. JSONObject简介

    JSONObject简介 本节摘要:之前对JSON做了一次简单的介绍,并把JSON和XML做了一个简单的比较:那么,我就在想,如果是一个json格式的字符串传到后台,需要怎么对其处理?如果前台页面需要 ...

  6. Gson解析的小例子

    最近解析些复杂的节点数据解析,用安卓自带的json解析比较麻烦所以只能用Gson解析,所以从网上下了点demo来看看 http://blog.csdn.net/tkwxty/article/detai ...

  7. android json解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  8. 【转】 JSONObject使用方法

    随笔- 46  文章- 0  评论- 132 JSONObject简介 本节摘要:之前对JSON做了一次简单的介 绍,并把JSON和XML做了一个简单的比较:那么,我就在想,如果是一个json格式的字 ...

  9. json学习系列(2)-生成JSONObject的方法

    生成JSONObject一般有两种方式,通过javabean或者map类型来生成.如下面的例子: 先定义一个User实体类: package com.pcitc.json; /** * 用户实体类 * ...

随机推荐

  1. Markdown Html高级功能 测试用例

    插入音频 后台样式代码: #cnblogs_post_body .music { height: 140px; /*padding-bottom: 14.39%;*/ /* 16:9 */ posit ...

  2. 【转帖】从 Oracle 到 PostgreSQL ,某保险公司迁移实践 技术实践

    从 Oracle 到 PostgreSQL ,某保险公司迁移实践 http://www.itpub.net/2019/11/08/4108/ 信泰人寿保险股份有限公司 摘要:去O一直是金融保险行业永恒 ...

  3. ax 2012批处理不运行问题

    最近在开发12的批处理,但是很奇怪所有的都配置好了就是不跑批处理,假如你也出现了那用下面的方法试试: 12的批处理和09不一样,不是运行x++代码,而且运行你CIL生成的DLL文件, 1.你必须让你的 ...

  4. spring boot 用@CONFIGURATIONPROPERTIES 和 @Configuration两种方法读取配置文件

    spring cloud  读取 配置文件属性值 1.bean @Data public class LocalFileConfig { /** * 文件存储地址 */ private String ...

  5. redis订阅与发布系统

    一.概述 1.redis通过publish.subscribe等命令实现了订阅与发布模式. 2.这个功能提供两种信息机制,分别是订阅/发布到频道和订阅/发布到模式. 二.频道的订阅与信息发送 1.re ...

  6. 微信公众号 分享接口 签名通过 分享无效果(JSSDK自定义分享接口的策略调整)

    为规范自定义分享链接功能在网页上的使用,自2017年4月25日起,JSSDK“分享到朋友圈”及“发送给朋友”接口,自定义的分享链接,其域名或路径必须与当前页面对应的公众号JS安全域名一致,否则将调用失 ...

  7. C# vb .net实现发光效果

    在.net中,如何简单快捷地实现Photoshop滤镜组中的发光效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...

  8. php-sql-server-2017

    Download the Microsoft Drivers for PHP for SQL Server https://docs.microsoft.com/en-us/sql/connect/p ...

  9. 信号的有效值(RMS)估计

    % Root Mean Square Value function [retval] = rms1(sig) N = 20; for k = 1 : length(sig)/N - 1 sig_sum ...

  10. Python——模块合集

    标准库模块 ● Python——OS(系统操作模块) ● Python——MD5(加密模块) ● Python——time(时间模块) ● Python——re(正则表达式) ● Python——sy ...