2017-09-25 70 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":"[]"}