php - 处理 json 解码数组时出现非法字符串偏移
问题描述
当我使用 json_decode 进行 api 响应时,我得到以下输出
Array
(
[Description] => {
"CustomerData": [
{
"CustomerId": "XXXXX290",
"MemExpiryDate": "2301",
"MobileNo": "XXXXXXX833",
},
{
"CustomerId": "XXXXX291",
"MemExpiryDate": "2109",
"MobileNo": "XXXXXXX587",
}
]
}
)
当我试图获得 CustomerId 值时
echo $resp['Description']['CustomerData'][0][CustomerId]
我收到错误
Warning: Illegal string offset 'CustomerData'
谁能解释我如何获得 CustomerId 的价值以及我做错了什么?
使用 json_decode 之前的原始响应
{"Description":"{\r\n \"CustomerData\": [\r\n {\r\n \"CustomerId\": \"XXXXX290\",\r\n \"MemExpiryDate\": \"2301\",\r\n \"MobileNo\": \"XXXXXXX833\"},\r\n {\r\n \"CustomerId\": \"XXXXX291\",\r\n \"MemExpiryDate\": \"2109\",\r\n \"MobileNo\": \"XXXXXXX587\" }\r\n ]\r\n}"}
解决方案
的Description
元素$resp
也是一个 JSON 字符串。您需要对此进行解码才能访问您所追求的数据...
$description = json_decode($resp['Description'], true);
echo $description['CustomerData'][0]['CustomerId'];
推荐阅读
- command - 如何在 SROS 的同一行中运行 2 个命令?
- c# - 无论如何在请求主体绑定到asp.net web api 2中的控制器操作方法之前修改请求主体
- python - 如何将参数传递给 scipy.optimize.differential_evolution 中的回调函数
- excel - 密码保护 Excel 工作表但允许编辑
- java - Collections.sort() 和使用流排序有什么区别?
- tensorflow - Tensorflow:一次处理一个类
- python - 首先安装 PortAudio Python 绑定和 pyaudio
- tensorflow - keras vgg16中的model.save只是在没有模型架构的情况下保存权重
- c# - Process.Start("microsoft-edge:") 在 dot net core 中抛出 Win32Exception
- java - 为什么 ConcurrentHashMap 中的 computeIfAbsent() 方法行为不一致?