2012-05-10 16 views
0

私はJSONArrayを(私はデータベースに保存されたJSON文字列を持っている)を解析するために、パッケージorg.jsonを使用していて解析します。ただし、コンテキストに応じて、同じキーでStringまたはJSONObjectが関連付けられている可能性がある場合は、解析することに成功しません。たとえば、次のJSONコードを参照JSON:Javaとorg.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"有する2つの...可能値

  1. ストリング"First Name"
  2. 値が{"2":{"value":"Extra Cheese","baseline":"undefined"},"3":{"value":"Pepperoni","baseline":"undefined"}}のJSONObject。

値が2つの異なるデータ型の場合、どのように正しく処理できますか?

答えて

0

あなたはさらにそれを処理できるように、あなたはおそらくまだ、それは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 
} 
0

は、それをこのように考えてjsのか、Javaで同じスコープの下で変数の作成を複製ので、AMBを避けるために、無効ですiguityをjson配列に配置する前に、それらを異なる変数名を持つ別々のjsonオブジェクトに入れます。