Java中将ArrayList内容转为JSONArray避免双层嵌套方括号问题问询
问题原因
你当前写法是先创建了空的JSONArray对象,再调用put方法把整个getFields ArrayList作为单个元素塞进了数组,自然就会出现外层多一层方括号的嵌套情况。
如果你先把ArrayList转为字符串再传入,JSON库会把整段字符串识别为普通字符串值,自动转义内部的双引号,所以会出现多余的反斜杠,不推荐这种实现方式。
解决方案
方案1:直接使用JSONArray构造方法(适配org.json等主流JSON库)
绝大多数Java JSON库的JSONArray都提供了直接接收集合类的构造方法,你直接把getFields作为参数传入构造方法即可,不需要手动调用put:
// 直接把ArrayList传入构造方法,会自动把集合内的所有元素填充到JSONArray中 JSONArray jsArray = new JSONArray(getFields);
该写法生成的jsArray就会是你预期的单层数组结构。
方案2:遍历集合逐个添加(全库兼容通用写法)
如果你用的JSON库没有提供接收集合的构造方法,可以遍历ArrayList的元素逐个插入到JSONArray中:
JSONArray jsArray = new JSONArray(); for (Object fieldItem : getFields) { jsArray.put(fieldItem); }
内容的提问来源于stack exchange,提问作者Steph
相关产品推荐
相关产品推荐

