如何在android中解析带冒号的json?

时间:2016-05-13 09:43:05

标签: android json

我在字符串之间有一个带冒号的json,我不知道如何解析它。我知道我在json中没有阵列,但我不确定如何获得这些值...

{
    "config": {
        "network": {
            "hni:21407" : "num:[INTNUM]",
            "hni:311490" : "num:044[INTNUM]"
        }
    }
}

这就是我正在尝试的,但我从来没有经历过循环,也不确定我是否需要它。

JSONObject obj = new JSONObject(netWorkJson);
String arr = obj.optString("network");

for(int i = 0; i < arr.length(); i++) {
    String hni = obj.getString("hni");
    String num = obj.getString("num");
}

提前致谢

4 个答案:

答案 0 :(得分:1)

首先需要解析内部json对象&#34; network&#34;然后你可以遍历它的键并逐个获取它们的值:

private void parseJSON(String netWorkJson) throws JSONException {
    JSONObject obj = new JSONObject(netWorkJson);
    JSONObject config = obj.getJSONObject("config");
    JSONObject network = config.getJSONObject("network");

    Iterator<?> keys = network.keys();
    while(keys.hasNext()) {
        String key = (String) keys.next();
        String value = network.getString(key);
    }
}

如果您拥有100个hni值,并且您不必逐个获取它们,它就会起作用。

答案 1 :(得分:0)

networkJSONObject而不是JSONArray,所以不需要使用for循环来获取它的值。只需使用它:

JSONObject obj = new JSONObject(netWorkJson);
// get network JSONObject from obj

JSONObject network=obj.getJSONObject("network");

// get both values from network object
String strHni=network.optString("hni:21407");
String strNum =network.optString("hni:311490");

答案 2 :(得分:0)

 JSONObject message = new JSONObject(config);
 String value=message.getJSONObject("network").getString("hni:21407")

试试这个

答案 3 :(得分:0)

  try {
        JSONObject jsonObject = new JSONObject("config");

        JSONArray jsonArray = jsonObject.getJSONArray("network");

        for(int i =0;i<jsonArray.length();i++){

            JSONObject jsonObject1 = jsonArray.getJSONObject(i);

            String hni21407 = jsonObject1.getString("hni:21407");
            String hni311490 = jsonObject1.getString("hni:311490");

        }

    } catch (JSONException e) {
        e.printStackTrace();
    }