2017-09-25 29 views
1

看看下面的代码片段。键“样本”的JSONObject积累并把这个“[]”字符串转换为数组

值是字符串"[]"

两个putaccumulate &功能被转换成空数组[]

import net.sf.json.JSONObject; 

public class sample { 
    public static void main(String[] args){ 

     JSONObject resObj = new JSONObject(); 
     resObj.put("sample","[]"); 
     System.out.println(resObj); 

    } 
} 

输出:

{"sample":[]} 

我想要的值,因为它( “[]”)。 like:

{"sample":"[]"} 

我该如何解决这个问题?

更新:

上面的例子只是为了说明问题。

实际上来自一个大XML我正在生成一个JSON。 在生成的JSON中没有问题。

虽然传递整个JSON字符串来积累&把功能面临这个问题。

+0

您是否试过转义方括号? – Amit

+0

你为什么要'']'被双引号包围?从输出中,JSONObject将''[]]'看作是一个空列表是合乎逻辑的,因为列表是JSON格式的一部分。你有没有尝试过使用'\\'转义? –

+0

尝试使用'resObj.put(“sample”,“\”[] \“”);'那会工作。 – procrastinator

回答

0

您使用的是一个相当古老的实施库json-lib,尝试“官方” org.json一个可以发现here和使用maven

<!-- https://mvnrepository.com/artifact/org.json/json --> 
<dependency> 
    <groupId>org.json</groupId> 
    <artifactId>json</artifactId> 
    <version>20170516</version> 
</dependency> 

然后

import org.json.JSONObject; 
System.out.println(new JSONObject().put("sample","[]")); 

能正确输出

{"sample":"[]"}