我在字符串之间有一个带冒号的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");
}
提前致谢
答案 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)
network
是JSONObject
而不是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();
}