JSONObject例子
说起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例子的更多相关文章
- JSONObject、JSONArray区别
json,就是一个键对应一个值,超级简单的一对一关系.现在用到的json那可以层层嵌套啊,刚开始接触的时候,确实有种崩溃的赶脚,不想去理,取个数据还那么麻烦.其实,就跟if else语句一样,如果if ...
- java即时通信小例子
学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是 ...
- JSONObject和JSONArray的关系
JSON字符串的最上一层,肯定是一个JSONObject,JSONObject的下一层,可以包含JSONArray,JSONArray又包含了若干个JSONObject.用例子来说明: package ...
- JSON的简单例子
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 下载JSON所需要的jar文件并加入工程后,编写如下代码: package com.hzhi.json; ...
- JSONObject简介
JSONObject简介 本节摘要:之前对JSON做了一次简单的介绍,并把JSON和XML做了一个简单的比较:那么,我就在想,如果是一个json格式的字符串传到后台,需要怎么对其处理?如果前台页面需要 ...
- Gson解析的小例子
最近解析些复杂的节点数据解析,用安卓自带的json解析比较麻烦所以只能用Gson解析,所以从网上下了点demo来看看 http://blog.csdn.net/tkwxty/article/detai ...
- android json解析及简单例子
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
- 【转】 JSONObject使用方法
随笔- 46 文章- 0 评论- 132 JSONObject简介 本节摘要:之前对JSON做了一次简单的介 绍,并把JSON和XML做了一个简单的比较:那么,我就在想,如果是一个json格式的字 ...
- json学习系列(2)-生成JSONObject的方法
生成JSONObject一般有两种方式,通过javabean或者map类型来生成.如下面的例子: 先定义一个User实体类: package com.pcitc.json; /** * 用户实体类 * ...
随机推荐
- 使用SnowFlake算法生成唯一ID
转自:https://segmentfault.com/a/1190000007769660 考虑过的方法有 直接用时间戳,或者以此衍生的一系列方法 Mysql自带的uuid 以上两种方法都可以查到就 ...
- TCP粘包和拆包的定义,产生的原因以及解决方案
TCP粘包:指发送方发送的若干数据包在接收方接收时粘成一团,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾 产生的原因: 1.发送方的原因:TCP默认使用Nagle算法,而Nagle算法主要做两件 ...
- [转帖]Linux教程(12)- linux输入输出重定向
Linux教程(12)- linux输入输出重定向 2018-08-21 22:57:02 钱婷婷 阅读数 49更多 分类专栏: Linux教程与操作 Linux教程与使用 版权声明:本文为博主原 ...
- [转帖]Socat 入门教程
https://www.hi-linux.com/posts/61543.html 现在安装k8s 必须带 socat 今天看一下socat 到底是啥东西呢. Socat 是 Linux 下的一个多功 ...
- Spring MVC 问题归纳
记录一些在Spring MVC配置中出现的问题 一.配置tomcat包没有加载 错误: idea调试web项目时出现:java.lang.ClassNotFoundException:org.spri ...
- 面试官问你MySQL的优化,看这篇文章就够了
作者:zhangqh segmentfault.com/a/1190000012155267 一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单的示例 ...
- Mac上go的下载安装教程
mac上go的下载安装教程 官网https://golang.google.cn/dl/下载,安装 环境变量配置 参考https://www.jianshu.com/p/5c1873eaf3ca Ba ...
- html2canvas以及domtoimage的使用踩坑总结
前言 首先做个自我介绍,我是成都某企业的一名刚刚入行约一年的前端,在之前的开发过程中,遇到了问题,也解决了问题,但是在下一次解决相同问题的时候,只对这个问题有一丝丝的印象,还需要从新去查找,于是,我注 ...
- [LOJ#3119][Luogu5405][CTS2019]氪金手游(DP+容斥)
先考虑外向树的做法,显然一个点在其子树内第一个出现的概率等于它的权值除以它子树的权值和.于是f[i][j]表示i的子树的权值和为j时,i子树内所有数的相互顺序都满足条件的概率,转移直接做一个背包卷积即 ...
- jdbcUrl is required with driverClassName
https://blog.csdn.net/newbie_907486852/article/details/81391525 springboot2.0配置多数据源: spring.datasour ...