【问题标题】:Handling JSON encoded parameters in PHP in every format在 PHP 中处理各种格式的 JSON 编码参数
【发布时间】:2013-07-23 09:30:35
【问题描述】:

我通过 POST 传递参数并且参数是 JSON 编码的。后来我捕获参数并在PHP文件中对其进行解码,如下所示:

$entityBody = file_get_contents('php://input');
$entityBody = json_decode($entityBody, true);

但问题是它仅在键在双引号中时才有效,如下所示:

 {
 "id": "5",
 "name": "abcd",
 "imei": "1234"
}

当键在单引号中时,像上面的代码一样不起作用。

{
 'id': "5",
 'name': "abcd",
 'imei': "1234"
} 

我是 Json 和 PHP 的新手。因此,如果有人告诉我如何处理所有此类案件,我将不胜感激。

【问题讨论】:

  • 您可以在运行json_decode之前运行过滤器将'更改为",或者您可以确保源数据正确发送
  • AFAIK 单引号不是有效的 JSON,所以修复发布数据的代码。
  • 对不起,我不明白。可以举个例子吗?
  • @DevZer0:这很难。如果字符串值中某处有单引号怎么办?还是键中的转义单引号?
  • 您显示的不是有效的 JSON。不允许用单引号括住字符串。

标签: php json post


【解决方案1】:

JSON 中的所有字符串必须双引号。单引号字符串或键不是有效的 JSON。理想情况下,您不应该为无效的 JSON 烦恼。这就是 standards 的用途,因此我们都可以使用 standardized 数据格式,而无需猜测。

【讨论】:

  • 在 JSON 或 PHP 中是否有任何函数,以便在编码错误时使 JSON 参数有效?
  • 不,因为你正在使用的不是 JSON。 这是你(?)组成的某种格式,不是 JSON,所以没有现有的函数可以使用它。确保获得有效的 JSON。
【解决方案2】:

您可能会发现 JSON Lint 是一个有用的工具:http://jsonlint.com/

您可以将 JSON 文本复制/粘贴到其中,它会告诉您其是否有效,如果无效,需要更正什么。当我遇到一些 JSON 时,我总是先使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    相关资源
    最近更新 更多