首页 > 解决方案 > 如何遍历 JSON 响应文本并使用 PHP 获取所有值

问题描述

{
"ver":1,
"inputs":[
  {
     "sequence":4294967295,
     "witness":"",
     "prev_out":{
        "spent":true,
        "tx_index":372805487,
        "type":0,
        "addr":"3AFgA1pHKrk4jFHwzUL1CKgZvXyFSWZfgD",
        "value":12712,
        "n":0,
        "script":"a9145dee3b52c0c363fd962c57f33f346c453dba7e5687"
     },
     "script":"00483045022100a3edd460e3aa186f4b318930d80ca97cb25d5e741896cf0a396151c0b0e39953022012f0bad5edea4aca199e19c68859e3f04a4dc7bedd5ceecfdba652707490e1bf0147304402206b86cf8f21dc79d85a1ba341416cabf98b1c837fa3468c5cec4ad0d2f707fe2f02205da8b6ffe1ec67bf703a4f1a45394c4f9ac7c14db2216d937025fdcb0dfe007501475221031131d02767e849cc0a03d067569b77a3b0b28797d1fecacfeaee6fa35a0634f221034b79ba896e312200d17e6a0e11266247522e48a6900a035231aca2c596dcc20e52ae"
  }
],
"weight":1212,
"block_height":543349,
"relayed_by":"0.0.0.0",
"out":[
  {
     "spent":false,
     "tx_index":377146538,
     "type":0,
     "addr":"13Zggf2Jc8K6e2hZ9fTP8ymzVyaYQWhRBR",
     "value":5443,
     "n":0,
     "script":"76a9141c1eb04aeb07c5a80fff5d7ab6382f6550dccd3188ac"
  }
],
"lock_time":0,
"size":303,
"double_spend":false,
"time":1538084433,
"tx_index":377146538,
"vin_sz":1,
"hash":"249256b255e9850fbf9abcbc73f8c872be2b51d3a055b66680bc7150f5bc1d1e",
"vout_sz":1
}

标签: javascriptphpjson

解决方案


您需要使用 将 json 响应转换为 php 数组json_decode

片段

$json = '{
"ver":1,
"inputs":[
  {
     "sequence":4294967295,
     "witness":"",
     "prev_out":{
        "spent":true,
        "tx_index":372805487,
        "type":0,
        "addr":"3AFgA1pHKrk4jFHwzUL1CKgZvXyFSWZfgD",
        "value":12712,
        "n":0,
        "script":"a9145dee3b52c0c363fd962c57f33f346c453dba7e5687"
     },
     "script":"00483045022100a3edd460e3aa186f4b318930d80ca97cb25d5e741896cf0a396151c0b0e39953022012f0bad5edea4aca199e19c68859e3f04a4dc7bedd5ceecfdba652707490e1bf0147304402206b86cf8f21dc79d85a1ba341416cabf98b1c837fa3468c5cec4ad0d2f707fe2f02205da8b6ffe1ec67bf703a4f1a45394c4f9ac7c14db2216d937025fdcb0dfe007501475221031131d02767e849cc0a03d067569b77a3b0b28797d1fecacfeaee6fa35a0634f221034b79ba896e312200d17e6a0e11266247522e48a6900a035231aca2c596dcc20e52ae"
  }
],
"weight":1212,
"block_height":543349,
"relayed_by":"0.0.0.0",
"out":[
  {
     "spent":false,
     "tx_index":377146538,
     "type":0,
     "addr":"13Zggf2Jc8K6e2hZ9fTP8ymzVyaYQWhRBR",
     "value":5443,
     "n":0,
     "script":"76a9141c1eb04aeb07c5a80fff5d7ab6382f6550dccd3188ac"
  }
],
"lock_time":0,
"size":303,
"double_spend":false,
"time":1538084433,
"tx_index":377146538,
"vin_sz":1,
"hash":"249256b255e9850fbf9abcbc73f8c872be2b51d3a055b66680bc7150f5bc1d1e",
"vout_sz":1
}';
$arr = json_decode($json, true); // you can use $arr direct as json hierarchy

//or convert to one-dimensional array
$result = [];
array_walk_recursive($arr, function ($item, $key) use (&$result){
    $result[$key] = $item;
});
print_r($result);

输出

Array
(
    [ver] => 1
    [sequence] => 4294967295
    [witness] => 
    [spent] => 
    [tx_index] => 377146538
    [type] => 0
    [addr] => 13Zggf2Jc8K6e2hZ9fTP8ymzVyaYQWhRBR
    [value] => 5443
    [n] => 0
    [script] => 76a9141c1eb04aeb07c5a80fff5d7ab6382f6550dccd3188ac
    [weight] => 1212
    [block_height] => 543349
    [relayed_by] => 0.0.0.0
    [lock_time] => 0
    [size] => 303
    [double_spend] => 
    [time] => 1538084433
    [vin_sz] => 1
    [hash] => 249256b255e9850fbf9abcbc73f8c872be2b51d3a055b66680bc7150f5bc1d1e
    [vout_sz] => 1
)

现场演示

请注意:您可以$arr用作 json 层次结构,也可以将所有键和值转换为一维数组。

警告:重复的键将被覆盖

文档

json_decode

array_walk_recursive


推荐阅读