【问题标题】:Dealing with JSONish things in PHP在 PHP 中处理 JSONish 的事情
【发布时间】:2018-02-05 22:27:52
【问题描述】:

我正在使用 PHP 来使用不属于我的服务。该服务返回的内容几乎但不完全不同于 JSON(帽子提示,HGG)。

也就是说,在最简单的形式中,它们看起来像这样

{a: 8531329}

通过json_decode运行上述字符串返回NULL

$foo = json_decode('{a: 8531329}');

问题是a 没有被引用。

$foo = json_decode('{"a": 8531329}');

PHP(无论是原生的还是通过常见的 packagegist 包)是否为我提供了一种将“valid-javascript-but-not-valid-json”字符串解析为 PHP 数组或 stdClass 的方法?或者我会自己解析这个? (我上面的例子是一个简单的例子——实际的字符串相当大)

【问题讨论】:

    标签: javascript php json


    【解决方案1】:

    JSON5 可能是你需要的:https://github.com/colinodell/json5

    它处理 JavaScript 中的对象字面量允许拥有而 JSON 不允许拥有的所有东西。

    【讨论】:

      【解决方案2】:

      如果我们将输入字符串定义为$i:

      $i='{a: 8531329}';
      

      我们可以使用preg_replace对其进行预处理以使其成为有效的JSON:

      json_decode(preg_replace('/\{([^:]*):/', '{"\1":', $i))
      

      当然,为了提供完整的解决方案,我需要查看更多需要纠正的地方。

      【讨论】:

      • 还有:非十进制数、尾随逗号、单引号、cmets。
      • +1 因为我确实爱我一个正则表达式——在这种情况下,我不认为这对我来说是正确的解决方案。尝试使用一个涵盖第三方服务可能向我抛出的所有可能内容的正则表达式似乎是一个长期的解决方案。
      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 2014-11-21
      • 2014-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多