如何从存储在变量中的 jsondecode() 响应中搜索和获取值? [复制]

Posted

技术标签:

【中文标题】如何从存储在变量中的 jsondecode() 响应中搜索和获取值? [复制]【英文标题】:How to search and get values from jsondecode() response stored in a variable? [duplicate] 【发布时间】:2020-10-28 03:43:12 【问题描述】:

我在 https://mysite/info 中有以下 JSON 响应:


 "wg0": 
   "privateKey": "[hidden]",
   "publicKey": "XXXXXXXXXXXXXXXXXXX",
   "listenPort": 0,
   "peers": 
     "B3GtLuabWguXoG2Tz8KVukPXx3twn7A+X/SVT8=": 
       "endpoint": "0.0.0.0:5377",
       "latestHandshake": "Oct 28, 2020 1:58:32 UTC",
       "transferRx": "2.432 GB",
       "transferTx": "1.098 GB",
       "allowedIps": [
         "10.85.85.2/32"
       ]
     ,
     "2Uqo3X2ubogU92LS4mWsZtF04ah3qJ4gt1g0=": 
       "endpoint": "0.0.0.0:5412",
       "latestHandshake": "Oct 28, 2020 1:58:52 UTC",
       "transferRx": "32.239 MB",
       "transferTx": "220.852 MB",
       "allowedIps": [
         "10.85.85.3/32"
       ]
     
   
 


我需要在 php 中将“allowedIps”值搜索到该响应中并返回相应的“latestHandshake”值。

例如:

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_URL, 'https://mysite/info');
$result2 = curl_exec($ch2);
curl_close($ch2);

$obj2 = json_decode($result2);

$IPtoSearch = "10.85.85.2/32";

//Now How can I search $IPtoSearch into $obj2 and return latestHandshake value?

...

感谢您的帮助!

【问题讨论】:

确保您的帖子中始终包含语言标签 (PHP),以确保它们被最大数量的其他用户看到。 确保您始终包含编码尝试和/或研究/辛勤证明,这将向志愿者保证您不仅仅是“倾销您的要求”。我们不希望您依赖这里的志愿者“为您工作”。帮助吸血鬼是一件坏事。如果您知道如何访问嵌套数组,请在您的 sn-p.xml 中进行演示。如果您知道如何拨打in_array(),请显示。 @Mag 【参考方案1】:

很遗憾,您返回的 JSON 实际上是无效的,因为 00000 不是有效的整数。如果您可以将00000 转换为0,您的JSON 将成功解码,您可以找到与您的搜索IP 地址对应的latestHandshake 值,如下所示:

$obj2 = json_decode($result2, true);
$IPtoSearch = "10.85.85.2/32";

foreach ($obj2['wg0']['peers'] as $peer) 
    if (in_array($IPtoSearch, $peer['allowedIps'])) 
        $latestHandshake = $peer['latestHandshake'];
        break;
    


echo "Last handshake for $IPtoSearch was at $latestHandshake\n";

输出(用于您的样本数据):

Last handshake for 10.85.85.2/32 was at Oct 28, 2020 1:58:32 UTC

Demo on 3v4l.org

【讨论】:

以上是关于如何从存储在变量中的 jsondecode() 响应中搜索和获取值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个 bigquery 响应将值插入 mysql 表

Flutter:尝试使用 jsonDecode - 错误:字符串不是索引错误的 int 类型的子类型

如何将 JSON 响应发送到 Swift 3 中的另一个视图

如何从 adodb 记录集中访问存储过程中的变量?

从存储在另一个变量中的值中提取数值[重复]

将 Ajax 响应分配给 php 变量