Java JSONObject获取第一个节点的值,而不考虑名称
我想知道是否有一种方法可以在不知道其名称的情况下获取JSONObject的第一个子对象的值: 我有一些JSON,其中一个节点名为,Java JSONObject获取第一个节点的值,而不考虑名称,java,android,jsonobject,Java,Android,Jsonobject,我想知道是否有一种方法可以在不知道其名称的情况下获取JSONObject的第一个子对象的值: 我有一些JSON,其中一个节点名为,this\u guy {"this_guy": {"some_name_i_wont_know":"the value i care about"}} 使用JSONObject,如果我不知道孩子的名字,我如何才能清楚地获得“我关心的值”。我只知道“this_guy”,任何人?使用它返回该对象中字符串名称的迭代器。然后使用这些键检索值 要仅获取第一个值,请执行以下操作
this\u guy
{"this_guy": {"some_name_i_wont_know":"the value i care about"}}
使用JSONObject,如果我不知道孩子的名字,我如何才能清楚地获得“我关心的值”。我只知道“this_guy”,任何人?使用它返回该对象中字符串名称的迭代器。然后使用这些键检索值
要仅获取第一个值,请执行以下操作:
Iterator<String> keys = jsonObject.keys();
// get some_name_i_wont_know in str_Name
String str_Name=keys.next();
// get the value i care about
String value = json.optString(str_Name);
Iterator keys=jsonObject.keys();
//找一些我不知道的名字
字符串str_Name=keys.next();
//获得我关心的价值
String value=json.optString(str_Name);
试试这个迭代器
JSONObject jsonObj = (JSONObject)jsonObject.get("this_guy");
for (Object key : jsonObj.keySet()) {
//based on you key types
String keyStr = (String)key;
Object keyvalue = jsonObj.get(keyStr);
/*check here for the appropriate value and do whatever you want*/
//Print key and value
System.out.println("key: "+ keyStr + " value: " + keyvalue);
}
一旦你得到了合适的值,就打破循环。例如,您说过您只需要内部映射中的第一个值。所以,试试像这样的女人
int count = 0;
String valuINeed="";
for (Object key : jsonObj.keySet()) {
//based on you key types
String keyStr = (String)key;
Object keyvalue = jsonObj.get(keyStr);
valueINeed = (String)keyvalue;
count++;
/*check here for the appropriate value and do whatever you want*/
//Print key and value
System.out.println("key: "+ keyStr + " value: " + keyvalue);
if(count==1)
break;
}
System.out.println(valueINeed);
如果只关心值而不关心键,则可以直接使用:
Object myValue = fromJson.toMap().values().iterator().next();
但我只想要第一个值,不管其他值如何keys@erik
第一个
值的概念在json对象中没有意义。@njzk2:第一个值是键
,第二个值是值
,因为正如您所知,JSONObject是键-值对的组合
@ρσѕρєK,我不会调用键value
,但是ok。值“我关心的值”在每个JSON对象中的位置是否固定?@AbtPst不能。根据实现的不同,json对象中值的位置不一定取决于json字符串中的位置。(而且位置可能完全不可用,例如,如果json解析器使用hashmaps返回对象)嗯,那么您一定知道您所寻找的值的位置吗?如果您不知道密钥,也不知道位置/索引,则无法确定值的位置。我可以信赖的是,服务人员只会为此对象返回一个子项。。我只支持{“this_guy”:“我关心的值”}但他们坚持上面的格式,所以只需要获取“this_guy”对象并提取值。看看我的答案
Object myValue = fromJson.toMap().values().iterator().next();