【问题标题】:JSON Validation Expecting 'EOF'预期“EOF”的 JSON 验证
【发布时间】:2014-03-03 16:18:43
【问题描述】:

我正在开发一个宁静的 api,并一直在使用 http://jsonlint.com/ 进行验证。组合两个 JSON 对象后,我遇到了;

Parse error on line 932:
...ssions": 329    }],[    {        "m
---------------------^
Expecting 'EOF'

我环顾四周,发现this 问题,但所有答案都指向没有逗号,而在我的问题中我确实有逗号。验证器还能寻找什么?

它指向我的对象数组之间的代码;

],
[

【问题讨论】:

  • 请展示相关 JSON 的完整代表性示例。我已经对问题所在进行了有根据的猜测,但一个完整的、最小的例子总是更好的方法。

标签: json


【解决方案1】:

您的 JSON 显示得不够多,但我猜它看起来像这样:

[
    {"some": "object"},
    {"some": "object"}
],
[
    {"some": "object"},
    {"some": "object"}
]

...这是无效的。在 JSON 中,必须有 一个 顶级项(在完整的 JSON 文档中必须是对象或数组)。

如果您要组合两个响应,则可以将它们中的每一个都设为包装对象上的属性值,例如:

{
    "response1": [
        {"some": "object"},
        {"some": "object"}
    ],
    "response2": [
        {"some": "object"},
        {"some": "object"}
    ]
}

【讨论】:

  • 您的猜测是正确的,第一个块是我将 JSON 放在一起的方式。我将尝试找出您的解决方案。谢谢。
  • @Jordan.J.D 你有没有遇到过 PHP 并分享了这个转换的算法?
【解决方案2】:

在我的例子中,在 jsonlint 上抛出此错误的是 JSON 对象末尾的分号:

Expecting 'EOF', '}', ',', ']', got 'undefined'

删除解决了它。

【讨论】:

    【解决方案3】:

    我不是多根 JSON 结构方面的专家 但这就是我所做的......只是将流的编码更改为 UTF-8,我的 PHP 代码开始运行良好

    【讨论】:

      【解决方案4】:

      从括号中删除双引号 [

      【讨论】:

      • 欢迎来到 StackOverflow。您能否为您的答案提供更多上下文并澄清例如您的意思是哪些双引号?在给定的示例中,括号周围没有双引号。
      猜你喜欢
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多