Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSONObject获取第一个节点的值,而不考虑名称_Java_Android_Jsonobject - Fatal编程技术网

Java JSONObject获取第一个节点的值,而不考虑名称

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”,任何人?使用它返回该对象中字符串名称的迭代器。然后使用这些键检索值 要仅获取第一个值,请执行以下操作

我想知道是否有一种方法可以在不知道其名称的情况下获取JSONObject的第一个子对象的值:

我有一些JSON,其中一个节点名为,
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();