2017-03-09 196 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);