如何将复杂的json转换为php?

时间:2019-05-02 12:13:16

标签: php json

我确实有复杂的json变量。我想解析并获取数据到php。

我尝试了从json数组中获取数据的所有可能方式

$productDetails =
[
{
"product":{"age":"","breed":"","category":{"name":"Animal Food"}, "country":{"name":"Qatar"}, "couriercharge":"23.00 AED",
           "dateTime":"2019-04-10T04:05:45.405Z",
}}

$json_details = json_decode($productDetails);

echo $json_details->couriercharge;

echo $json_details->category->name;

我想获取快递费用和姓名的详细信息

2 个答案:

答案 0 :(得分:3)

欢迎堆栈溢出。

第一项业务,示例JSON无效。 PHP json_decode()应该失败并出现错误。正确的JSON如下:

[{
    "product": {
        "age": "",
        "breed": "",
        "category": {
            "name": "Animal Food"
        },
        "country": {
            "name": "Qatar"
        },
        "couriercharge": "23.00 AED",
        "dateTime": "2019-04-10T04:05:45.405Z"
    }
}]

第二项:如何访问couriercharge以及与此相关的任何其他键/值对。您使用json_decode()处于正确的轨道。

$var_name = jsone_decode($json_string)

将有价值的JSON转换为PHP stdClass对象。从那里应该可以使用箭头符号遍历结构树。

echo $var_name[0]->product->couriercharge

如果您具有适当的调试器功能,它将对您有很大的帮助;因为您可以在执行期间停止程序并在过程中检查值变量。

希望这会有所帮助,再次欢迎您使用Stack Overflow。

答案 1 :(得分:1)

您的JSON格式不正确,其结尾缺少右括号, 您需要传递true参数以使其成为数组

$productDetails =
'{
  "product":
  {
    "age":"",
    "breed":"",
    "category":
    {
        "name":"Animal Food"
    }, 
    "country":
    {
        "name":"Qatar"
    }, 
    "couriercharge":"23.00 AED",
   "dateTime":"2019-04-10T04:05:45.405Z"
 }
}';
$jsonToarray = json_decode($productDetails, true);
echo $jsonToarray['category']['name']
echo $jsonToarray['couriercharge'];