【问题标题】:Why is this JSON invalid?为什么这个 JSON 无效?
【发布时间】:2014-06-06 09:11:46
【问题描述】:
{
    "already_public": "null",
    "status": "true",
    "message": "Service provider added successfully",
    "detail": {
        "id": "1175",
        "address_1": "",
        "address_2": "",
        "profession": "Accountant",
        "city": "",
        "company": "",
        "email_1": "",
        "email_2": "",
        "firstname": "das\' feet",
        "lastname": "",
        "life_block": "Family",
        "work_phone": "",
        "mobile_phone": "",
        "home_phone": "",
        "fax": "",
        "state": "",
        "title": "",
        "website": "",
        "zip": "",
        "ismyprovider": "1",
        "privacy": "null",
        "img_url": "http://localhost/mtube/uploads/blank_pic.png"
    },
    "inresponseto": "addServiceProvider"
}

除了这一行,一切都很好

"firstname": "das\' feet"

它在双引号内有一个单引号。尽管在字符之前有一个\,但这个 json 被 jsonlint 无效。

【问题讨论】:

  • 尝试用另一个转义斜线? “大脚”
  • 验证是否在这里jsonlint
  • 我的逻辑说用 "\\" 转义 "\" 基本说 string("das\' feet") - 据我所知,jsonlint 需要在 ' 之后有一个字符才能被转义 - 试试这可能是“das\'s feet”——我知道这不是你想要的,但它可以证明这个理论

标签: iphone json jsonlint


【解决方案1】:

应该有双斜杠来转义斜杠字符

"firstname": "das\\' feet"

【讨论】:

  • 带有双斜杠,它在浏览器中工作,但iphone解析器无法解析:(
  • @Sarah, / 必须在名字中吗?你也可以从名字中跳过/“名字”:“大脚”
  • 你用的是什么iphone解析器?如果它没有用das\\' feet 解析 JSON,我认为它有问题,你应该提交给他们。
【解决方案2】:

不应转义单引号'

字符串是零个或多个 Unicode 字符的序列,用双引号括起来,使用反斜杠转义。字符表示为单个字符串。字符串与 C 或 Java 字符串非常相似。

JSON.org

如您所见,单引号不应被转义。

或者,如果您想保留 \,则需要转义:

 "firstname": "das\\' feet",

【讨论】:

    【解决方案3】:

    您不需要转义单引号。更多信息是here

    【讨论】:

      猜你喜欢
      • 2012-02-06
      • 2020-02-23
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多