2013-03-29 230 views
5
JSONObject login = new JSONObject(); 
login.put("Key1", "Value1"); 

我只是想用鍵和值對創建一個簡單的JSON對象。我得到這個例外「Unhandled exception type JSONException」。未處理的異常類型JSONException

Map<String,String> map = new HashMap<String,String> 
map.put("key1", "value1"); 

它們是否都是用鍵,值對創建對象的等效方法。創建需要發送到服務的對象時,哪種方式是首選方式。

+0

基於可能的方式是創建JSONObject..And創建插入數據JSON對象將拋出你需要抓住這一例外的例外,那就是未處理的異常,這只是一個警告 – Pragnani

+0

@Kevin:認真改變這個問題的主題。因爲這完全是誤導性的 – karthick

+0

它將取決於你的服務器除外,如果你需要發送一個頭文件應用程序/ json那麼你必須創建一個json對象(更有用的方法是你有多個參數){「key1」:「value1」} –

回答

14

未處理的異常類型JSONException

你需要用你的代碼放到try-catch塊。這是你的警告。

JSONObject login = new JSONObject(); 
    try { 
     login.put("Key1", "Value1"); 
    } 
    catch (JSONException e) {... } 

他們是創造與關鍵,價值 對物體的兩個等價的方式。當創建一個需要 發送到服務的對象時,這是首選方式。

JSONObject.put()拋出JSONException和Map.put()不是。

兩者都作爲鍵值對但它們不同。

JSON是通常用於數據交換的特定輕量級格式,如果創建它,則可以通過網絡輕鬆傳遞其字符串表示形式。

使用Map作爲數據結構是不可能的(直接轉換爲字符串)或者換句話說,您必須通過Map中的KeySet()以及其值爲String的每個鍵存儲鍵(例如使用StringBuilder)想要達到與JSON幾乎相同的效果。

所以,如果你想通過網絡在「不同的機器」之間傳遞數據,直接爲它指定JSON

+0

這只是問題的一部分。實際的問題是沒有處理例外。 – karthick

+0

謝謝Sajmon ...我只是想,當我們創建nexted對象結構是好的與JSONObject去,或者我應該與集合框架,然後在調用服務之前Strigify對象。 – Kevin

+0

@Kevin asnwer已更新。 – Sajmon

1

。去的JSONObject:

  • 當你想創建JSON或如果你傳遞數據的服務接受的JSONObject

    去託收

  • 如果操縱它
  • 特定的數據結構適合您

  • 如果您傳遞數據的服務接受Collection對象
+0

我仍然可以使用GSON Library或JSON將我的Collection對象變成Strigified形式嗎? – Kevin

+0

是的。因此,爲了JSOn的目的,它適合使用JSONObject,因爲它提供了額外的功能,比如在有任何重複鍵時拋出JSONException。 –

相關問題