簡體   English   中英

JSON:使用Java和org.json解析(遞歸)

[英]JSON: parsing with java and org.json (recursion)

我正在使用org.json包來解析JSONArray(我將json字符串保存在數據庫中)。 但是,當同一鍵可能已關聯String或JSONObject時(取決於上下文),我無法成功解析它。

例如,請參閱以下JSON代碼...

[ { "cssClass" : "input_text",
    "required" : "undefined",
    "values" : "First Name"
  },
  { "cssClass" : "checkbox",
    "required" : "undefined",
    "title" : "What's on your pizza?",
    "values" : { "2" : { "baseline" : "undefined",
            "value" : "Extra Cheese"
          },
        "3" : { "baseline" : "undefined",
            "value" : "Pepperoni"
          }
      }
   }
]

在上面的代碼中,鍵"values"具有兩種可能性...

  1. 值為"First Name"字符串
  2. 值為{"2":{"value":"Extra Cheese","baseline":"undefined"},"3":{"value":"Pepperoni","baseline":"undefined"}}的JSONObject 。

當值可能是2種不同的數據類型時,如何正確處理呢?

您可能仍需要檢測它是JSONObject還是String,以便您可以進一步處理它,但是這里的某些內容可能會有所幫助...

您可以嘗試這樣的事情...

String cssClass = myJson.getString("cssClass");
if (cssClass.equals("input_text")){
    // Read it as a String
    String values = myJson.getString("values");
}
else if (cssClass.equals("checkbox")){
    // Read it as a JSONObject
    JSONObject values = myJson.JSONObject("values");
    // further processing here
}

或者像這樣的東西...

String cssClass = myJson.getString("cssClass");
String values = myJson.getString("values");

if (cssClass.equals("input_text")){
    // do nothing - it's already a String
}
else if (cssClass.equals("checkbox")){
    // Parse the String into a JSONObject
    JSONObject valuesObject = new JSONObject(values);
    // further processing here
}

在同一個作用域下,在js或java中創建重復變量的想法是無效的,因此為了避免歧義,將它們放入json數組之前,請將它們放在具有不同變量名的單獨json對象中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM