2012-06-20 105 views
4

我有一個Jersey客戶端是從一個源獲取JSON,我需要進入正確格式化JSON:如何在java中正確地格式化JSON字符串?

我的JSON字符串看起來像通過HTTP請求抓住時folllowing:

{ 
    "properties": [ 
     { 
      someproperty: "aproperty", 
      set of data: { 
       keyA: "SomeValueA", 
       keyB: "SomeValueB", 
       keyC: "SomeValueC" 
      } 
     } 
    ] 
} 

我我有問題,因爲JSON必須格式正確,並且keyA,keB和keyC不會被引號括起來。有沒有一些庫可以幫助添加引號或者將這個字符串轉換爲格式正確的json的最佳方式?或者,如果有一些簡單的方法可以將它轉換爲json對象而無需編寫一堆帶有與傳入結構相匹配的變量和列表的類?

+0

傑克遜就是這樣一個圖書館。 – bmargulies

+0

想要一個像這樣的字符串如何轉換爲JSON的例子。從我所知道的傑克遜需要的JSON字符串格式正確(即所有的密鑰需要雙引號圍繞密鑰) – Rolando

回答

4

一個簡單的JSON解析器和生成器,您可以使用json-lib。這非常方便!您可以構建您的JSON字符串是這樣的:

JSONObject dataSet = new JSONObject(); 
dataSet.put("keyA", "SomeValueA") ; 
dataSet.put("keyB", "SomeValueB") ; 
dataSet.put("keyC", "SomeValueC") ; 

JSONObject someProperty = new JSONObject(); 
dataSet.put("someproperty", "aproperty") ; 

JSONArray properties = new JSONArray(); 
properties.add(dataSet); 
properties.add(someProperty); 

,當然你可以簡單地通過調用properties.toString()

+0

我想採取我現有的json字符串,並將其轉換爲正確格式的雙引號json字符串。 – Rolando

+0

嘗試'JSONObject.fromObject(jsonString).toString' – Cruis

0

您可以使用argo,在Java

3

我喜歡Flexjson,並使用lots of initilizers讓你的JSON字符串:

public static void main(String[] args) { 

    Map<String, Object> object = new HashMap<String, Object>() { 
     { 
      put("properties", new Object[] { new HashMap<String, Object>() { 
       { 
        put("someproperty", "aproperty"); 
        put("set of dada", new HashMap<String, Object>() { 
         { 
          put("keyA", "SomeValueA"); 
          put("keyB", "SomeValueB"); 
          put("keyC", "SomeValueC"); 
         } 
        }); 
       } 
      } }); 
     } 
    }; 

    JSONSerializer json = new JSONSerializer(); 
    json.prettyPrint(true); 
    System.out.println(json.deepSerialize(object)); 
    } 

結果:

{ 
    "properties": [ 
    { 
     "someproperty": "aproperty", 
     "set of dada": { 
      "keyA": "SomeValueA", 
      "keyB": "SomeValueB", 
      "keyC": "SomeValueC" 
     } 
    } 
    ] 
} 
3

你的字符串不是JSON。這與JSON有些相似之處。沒有任何形式的JSON使得這些引用是可選的。 AFAIK,沒有圖書館會讀取你的字符串,並應付缺少的引號,然後正確地吐出來。你需要找到產生這個的代碼並修復它以產生實際的JSON。

相關問題