2017-03-09 64 views
2

我有一個字符串。我將它轉換爲JSONOBJECT,我試圖提取基於密鑰的值。JSON從關鍵字提取值

JSON字符串:

jsonString=" 
{ 
\"AREA\": [\"IT,SALES\"], 
\"CITY\": [\"LA\",\"NORTH\"] 
}"; 

我想 「AREA」 在一個字符串和市一個字符串值。我曾嘗試過:

JSONObject jsonOb = new JSONObject("jsonString"); 
String area = jsonOb.getString("AREA"); 

但我不能以這種方式檢索值。需要一些建議。

+0

你叫什麼「jsonString」? – SegFault

+0

@SegFault更新了我的問題。抱歉。 jsonString json本身。 – user7637864

+0

可能的重複[如何從此json對象中抽取字符串數組?](http://stackoverflow.com/questions/9373398/how-do-i-pull-the-string-array-from-this-json -object) – glw

回答

2

你試圖直接訪問Area,而這是一個JSONArray對象。

String json="{\"AREA\": [\"IT,SALES\"],\"CITY\": [\"LA\", \"NORTH\"]}"; 
JSONObject jsonOb = new JSONObject(json); 
JSONArray arrJson=jsonOb.getJSONArray("AREA"); 

for(int i=0;i<arrJson.length();i++) 
System.out.println(arrJson.getString(i)); 
2
JSONArray area = (JSONArray) jsonObject.get("AREA"); 
Iterator<String> iterator = area.iterator(); 
while (iterator.hasNext()) { 
    System.out.println(iterator.next()); 
} 

您應該得到一個JSONArray對象,然後您可以簡單地迭代並構建適當的字符串(使用StringBuilder)。

你可以參考this article獲得進一步的幫助。

+0

Hi @Alon Segal。謝謝你的回覆。我在這裏得到一個類型轉換異常: 「area.iterator();」 – user7637864

2

您的數據有[],所以請使用getJSONArray("AREA"),您可以對此進行迭代。

(該方法正是將取決於你有什麼庫)

+0

我在這裏使用org.json庫@ cricket_007 – user7637864

+0

好吧,我認爲那個方法存在,基本上'getString(「AREA」)'會嘗試返回一個String,而不是列表這是在你的數據 –

2

我相信這是你所追求的:

String jsonString = "{\"AREA\": [\"IT,SALES\"],\"CITY\": [\"LA\",\"NORTH\"]}"; 
    JSONObject jObj; 
    String areaString = ""; 
    String cityString = ""; 
    try 
    { 
     jObj = new JSONObject(jsonString); 
     areaString = jObj.getJSONArray("AREA").toString(); 
     cityString = jObj.getJSONArray("CITY").toString(); 
    } 
    catch (JSONException e) 
    { 
     e.printStackTrace(); 
    } 

    System.out.println("areaString: " + areaString); 
    System.out.println("cityString: " + cityString);