获取JSON的第一个条目

时间:2016-05-10 18:52:28

标签: php json decode

我在网址中有这个JSON:

{"success":true,"rgInventory":{"6073259621":{"id":"6073259621","classid":"1660549198","instanceid":"188530139","amount":"1","pos":1}}}

我需要在rgInventory之后获得第一个条目。问题是问题是假设我不知道有"6073259621"。如何在不知道那里的情况下获得它?

我尝试这个但不起作用:

$obj = json_decode(file_get_contents($url), true);
$obj2 = json_decode(json_encode($obj['rgInventory']), true);
$obj3 = json_decode(json_encode($obj2), true); 
echo $obj3;

3 个答案:

答案 0 :(得分:0)

如果JSON字符串有效且如下所示

{ "success":true,
  "rgInventory":{
      "6073259621":{
          "id":"6073259621",
          "classid":"1660549198",
          "instanceid":"188530139",
          "amount":"1",
          "pos":1
       }
    }
}
  

在$ obj中获取解码,如

  $obj = json_decode(file_get_contents($url), true);
  

然后你的第一个条目是

 echo array_keys($obj['rgInventory'])[0];
  

清楚地理解它并知道“6073259621”

的位置
$obj = json_decode(file_get_contents($url), true);
var_dump($obj);
  

还要注意差异

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));

输出将是..

// decode as object
object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

// decode as array
array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

答案 1 :(得分:0)

用这个解码JSON之后:

$obj = json_decode(file_get_contents($url), true);

您可以使用resetrgInventory获取第一项,无论其关键是什么。

$first_entry = reset($obj['rgInventory']);

答案 2 :(得分:0)

以下是使用each()获取密钥和值(数组)的简单方法:

$data = json_decode(file_get_contents($url), true);

list($key, $val) = each($data['rgInventory']);

echo $key;
print_r($val);

收率:

6073259621
Array
(
    [id] => 6073259621
    [classid] => 1660549198
    [instanceid] => 188530139
    [amount] => 1
    [pos] => 1
)

但我刚注意到id与密钥相同,所以并不是真的需要。