gpt4 book ai didi

php - 在 PHP 中解析 JSON 响应 - protected key ?

转载 作者:搜寻专家 更新时间:2023-10-31 20:37:15 25 4
gpt4 key购买 nike

我正在使用 Curl 在 Sage 服务器上执行 GET 请求。响应采用 JSON 格式,但我无法访问键/值。

响应示例如下:

{
"$descriptor": "Sage Accounts 50 | tradingAccount.",
"$totalResults": 1508,
"$startIndex": 1,
"$itemsPerPage": 1508,
"$resources": [
{
"$url": "http://it1:5493/sdata/accounts50/GCRM/{53C58AA8-1677-46CE-BCBE-4F07FED3668F}/tradingAccountCustomer(9a7a0179-85cb-4b65-9d02-73387073ac83)?format=atomentry",
"$uuid": "9a7a0179-85cb-4b65-9d02-73387073ac83",
"$httpStatus": "OK",
"$descriptor": "",
"active": true,
"customerSupplierFlag": "Customer",
"companyPersonFlag": "Company",
"invoiceTradingAccount": null,
"openedDate": "\/Date(1246834800000+0100)\/",
"reference": "1STCL001",
"reference2": null,
"status": "Open"
}
/* Additional results omitted for simplicity */
}

我需要为 $resources 的每个 child 访问 2 个键/值对。第一个是 $uuid,第二个是 reference

我尝试过各种方法,包括:

$result=curl_exec($ch);
$resources = $result->{'$resources'};
print_r($resources); /* Non-object error */

有人可以阐明我如何访问这些键/值吗?

更新

如果我执行以下操作,我会收到一个Notice: Trying to get property of non-object 错误。

$result = json_decode(curl_exec($ch));
$resources = $result->{'$resources'};
print_r($resources);

编辑2

目前使用的全部代码:

<?php 
header('content-type:application/json');
error_reporting(E_ALL);

$url = "http://it1:5493/sdata/accounts50/GCRM/-/tradingAccounts?format=json";

$header = array();
$header[] = 'Authorization: Basic bWFuYWdlcjpjYmwyMDA4';
$header[] = 'Content-Type: application/json;';

// Initiate curl
$ch = curl_init();
// Will return the response, if false it print the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set the url
curl_setopt($ch, CURLOPT_URL,$url);
// Set the header
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
// Execute
$result = json_decode(curl_exec($ch));

if ($result === false)
{
// throw new Exception('Curl error: ' . curl_error($crl));
print_r('Curl error: ' . curl_error($ch));
}
// Closing
curl_close($ch);

// Access property $resources
$resources = $result->{'$resources'};

// Dump results
print_r($resources);


?>

编辑3

var_dump($result);的输出

string '{
"$descriptor": "Sage Accounts 50 | tradingAccount",
"$totalResults": 1508,
"$startIndex": 1,
"$itemsPerPage": 1508,
"$resources": [
{
"$url": "http://it1:5493/sdata/accounts50/GCRM/{53C58AA8-1677-46CE-BCBE-4F07FED3668F}/tradingAccountCustomer(9a7a0179-85cb-4b65-9d02-73387073ac83)?format=atomentry",
"$uuid": "9a7a0179-85cb-4b65-9d02-73387073ac83",
"$httpStatus": "OK",
"$descriptor": "",
'... (length=5333303)

最佳答案

服务器返回编码为 UTF-8 的 JSON,其中 BOM 将 3 个字符放在字符串的开头。尝试获取正确编码的 JSON,如果不能,则删除前 3 个字符,然后使用 json_decode 获取 PHP 对象。

关于php - 在 PHP 中解析 JSON 响应 - protected key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32139900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com