JSONArray的使用
用的是fastjson.jar包
1. jsonarray,jsonobject 使用正确代码如下:(这种getJSONObject 函数形成jsonobj 的方式非常好,可以避免循环引用或jsonobj 后来的覆盖前面的)
- public JSONArray getJSONArray(){
- JSONArray jsonarray = new JSONArray();
- jsonarray.add(getJsonObj("name", "ar.arch.lcalplay"));
- jsonarray.add(getJsonObj("name", "ar.arch.ticet"));
- jsonarray.add(getJsonObj("name", "ar.arch.hotl"));
- jsonarray.add(getJsonObj("name", "ar.arch.surehotel"));
- return jsonarray;
- }
- public JSONObject getJsonObj(String name, String value) {
- JSONObject jsonobj = new JSONObject();
- jsonobj.put(name,value);
- return jsonobj;
- }
其中使用jsonarray可能出现错误,wrong代码如下:
- JSONArray jsonarray = new JSONArray();
- JSONObject jsonobj = new JSONObject();
- for(int i=0;i<3;i++){
- jsonobj.put("task_id", rs.getString("task_id"));
- jsonobj.put("service_name", rs.getString("service_name"));
- jsonobj.put("thread_num", rs.getString("thread_num"));
- jsonobj.put("delay_time", rs.getString("delay_time"));
- jsonobj.put("last_time", rs.getString("last_time"));
- jsonarray.add(jsonobj);
- }
答疑:其中正确代码的第三句是重点,每次都要新new出一个对象,不然循环了三次,其实是一直更新一个对象,jsonarray中存的就是最终被修改的jsonobj。
这就是Java中的一切都是引用的原则,jsonarray虽然add的是Object,但是最终add的是引用,所以要add不同对象,就必须每次new一个新的。
读了源码,这里jsonarray是用List实现的,故而推广到List.add(Object)上,也是一样,每次add,都要新new一个对象再add。
2.servlet 的 doget 方法返回给前端的方法
- doget(){
- //后端给前端推jsonobject或者jsonarray都可以
- response.getWriter().write(JSON.toJSONString(jsonobj));
- response.getWriter().write(JSON.toJSONString(jsonobj));
- }
3. JSON.toJSONString( ) 时会出现 $ref
解决方案是:通过选项 DisableCircularReferenceDetect来禁止循环引用检测
代码:
- JSON.toJSONString(jsonarray,SerializerFeature.DisableCircularReferenceDetect)
JSONArray的使用的更多相关文章
- PHP中模拟JSONArray
前面整理过一篇文章,描述php中的array与json的array和object的转换关系.http://www.cnblogs.com/x3d/p/php-json-array-object-typ ...
- Gson将字符串转换成JsonObject和JsonArray
以下均利用Gson来处理: 1.将bean转换成Json字符串: public static String beanToJSONString(Object bean) { return new Gso ...
- JSONArray的应用
从json数组中得到相应java数组,如果要获取java数组中的元素,只需要遍历该数组. /** * 从json数组中得到相应java数组 * JSONArray下的toArray()方法的使用 * ...
- JSONObject、JSONArray区别
json,就是一个键对应一个值,超级简单的一对一关系.现在用到的json那可以层层嵌套啊,刚开始接触的时候,确实有种崩溃的赶脚,不想去理,取个数据还那么麻烦.其实,就跟if else语句一样,如果if ...
- JSONObject,JSONArray,Map,String之间转换
http://blog.csdn.net/superit401/article/details/51727739 1.String转JSONObject String jsonMessage = &q ...
- 不同json如何使用jsonArray以及ajax如何取,实现读取新闻
jsp界面 <%@ page contentType="text/html;charset=gb2312"%><%@page import="org.j ...
- java JSONObject/JSONArray详解
应用架包:json-lib-2.4-jdk15.jar.及相关依赖架包. 一.JSONObject和JSONArray对象 -------------------------------------- ...
- JSON文本转换为JSONArray 转换为 List<Object>
package com.beijxing.TestMain; import java.io.File; import java.io.IOException; import java.util.Arr ...
- json文本装换为JSONArray
package com.beijxing.TestMain; import java.io.File; import java.io.IOException; import org.apache.co ...
- List<Object> to JSONArray一
package com.beijxing.TestMain; import java.util.ArrayList; import java.util.List; import com.beijxin ...
随机推荐
- beaglebone_black_学习笔记——(9)UART使用
笔者通过查阅相关资料,了解了BeagleBoneBlack开发板的UART接口特性,掌握的UART接口的基本使用方法,最后通过一个C语言的例程实现串口的自发自收.有了这个串口开发板就可和其他设备进行串 ...
- Oracle基础语法
--表create table tb_myTable( mname vardhar2(30), pwd varchar2(30)); --存储过程create or replace procedure ...
- [BZOJ2257][Jsoi2009]瓶子和燃料(数学)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2257 分析: 1.先考虑确定的瓶子下的最小体积是多少 ①假设只有两个瓶子v1,v2,易 ...
- hibernate用setResultTransformer转换
当你用hibernate查出数据,但是类型不是原来的类型怎么办,新增的实体类还可以用,query.setResultTransformer(Transformers.aliasToBean(AA.cl ...
- 求二叉树的宽度C语言版
/*层次遍历二叉树,每一层遍历完成以后都重新插入特定的指针 (比如本例使用的特殊指针是数据元素为#,左右儿子为空的指针), 这样在每次访问到所指向数据为#的队列中的结点指针是就知道该指针是这层的末尾, ...
- 9.29判断变量x是奇数还是偶数
方法一: package qqq; public class Jiou { public static void main(String[] args) { // TODO Auto-generate ...
- poj3233 矩阵等比数列求和 二分
对于数列S(n) = a + a^2 + a^3 +....+ a^n; 可以用二分的思想进行下列的优化. if(n & 1) S(n) = a + a^2 + a^3 + ....... + ...
- js-jquery-将table的td转化成可编辑的文本
1.使用插件mindmup-editabletable.js $('#table').editableTableWidget({editor: $('<textarea>')}); 2.j ...
- java-URLConnection网络数据收取
通过url创建connection方式收取 import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import ja ...
- Http 和TCP的关系,TCP长连接和短连接有什么区别?
HTTP 协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用.由于HTTP在 ...