【问题标题】:Removing Last Comma in JSON删除 JSON 中的最后一个逗号
【发布时间】:2021-09-28 15:10:59
【问题描述】:

我在这里尝试了以前的解决方案,但我的问题仍然存在。

当我使用 cURL 将 json_decode($result) 作为响应时,我得到“NULL”。

我做var_dump($response)时,字符串类型响应如下。

据我了解,出现这个问题是因为最后一部分的逗号。

我的回复(字符串类型):

{
  "returnCode": "0",
  "returnMessage": "bla bla bla message",
  "fast": "H",
}

【问题讨论】:

  • 请您edit问题包含指向您所指的“以前的解决方案”的链接;或者更好的是,minimal reproducible example 您尝试过的代码以及您得到的结果。
  • 你应该从源头上解决这个问题。末尾的逗号不是有效的 JSON。
  • 这意味着源没有使用正确的 JSON 库来创建它,这可能会导致其他问题。你应该解决这个问题,而不是像这样尝试解决它。​​

标签: php json curl


【解决方案1】:

str_replace 可以在这里工作:

$cleaned_response = str_replace($response, ",\n}", "}");

您只需要确保换行符正确。

【讨论】:

  • 我是这样想的;但我认为它不稳定。因为响应值、字符等可以更改...
  • 但是你只关心最后一个逗号和换行符。那不应该改变。如果是这样,那么您正在访问一个不稳定的 API。
  • 你是对的,但这不是我的服务。所以,不知道下次会有什么反应。我想知道,如果这个字符串的结尾有很多换行符或空格(或类似的东西)你的代码仍然有效吗?你怎么看?顺便提一下
【解决方案2】:

您可以使用json_last_error() 查找使用json_decode() 时的最终错误。

但无论如何,你是对的:你得到的响应不是一个有效的 JSON,它不能有最后一个逗号。

此处示例:http://sandbox.onlinephpfunctions.com/code/21c25760f21c5d33dc7f0c6397161fa4a26b3b81

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    相关资源
    最近更新 更多