首页 > 解决方案 > 处理 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}"}

标签: phparraysjson

解决方案


Description元素$resp也是一个 JSON 字符串。您需要对此进行解码才能访问您所追求的数据...

$description = json_decode($resp['Description'], true);

echo $description['CustomerData'][0]['CustomerId'];

推荐阅读