如何解析PHP Web服务中的JSON传递

时间:2012-11-03 21:19:11

标签: php json curl

我希望在PHP中传递JSON:{"name":"jason","age":"20},但 POST

在RoR中,我可以使用params["name"]&获取这两个值。 params["age"]

但我不知道如何用PHP获取它们。

我知道我可以使用json_decode将JSON字符串“转换”为关联数组,但我不知道如何获取JSON字符串。

在我的 PHP代码中,我尝试过这样的事情:

<?php
    $json_string = $_POST['params'];

    $json_object= json_decode($json_string);
    print_r($json_object);

    echo $json_object->name;
    echo " ";
    echo $json_object->age;
?>

然后我用终端测试了PHP,得到了正确的结果

curl -d 'params={"name":"jason", "age":"20"}' xxxx/test_json_decode.php

它有效但我觉得很奇怪,因为我没有设置'Content-Type: application/json'

这是在PHP中解析JSON的正确方法吗?

1 个答案:

答案 0 :(得分:2)

内容类型仅在某些情况下有用,例如jquery执行标准.post,其中您没有明确告诉它期望json响应。 json字符串只是文本,内容类型只是接收者的线索。但你仍然可以发送一个带有image / jpeg的json字符串,并仍然对其进行解码并再次获得原生结构。

只要传入json_decode()的内容是一个有效的JSON字符串,无论它与之一起发送的mime类型如何,它都将被解码为本机结构。