【问题标题】:How can i parse json string without the opening and closing string quotes?如何在没有开始和结束字符串引号的情况下解析 json 字符串?
【发布时间】:2023-03-10 01:10:01
【问题描述】:

如何在没有左引号和右引号的情况下解析以下 json 字符串?似乎 javascript JSON.parse 函数正在用引号解析字符串!因此会引发语法错误。

这是我的字符串;

"[
    {
        "pk": 1,
        "model": "pms.category",
        "fields": {
            "name": "Rent",
            "add_date": "2011-07-28 01:33:21",
            "agent": 3,
            "category_type": "I",
            "add_user": 3,
            "desc": "Rent"
        }
    },
    {
        "pk": 2,
        "model": "pms.category",
        "fields": {
            "name": "Deposit Rent",
            "add_date": "2011-07-28 01:33:21",
            "agent": 3,
            "category_type": "I",
            "add_user": 3,
            "desc": "Rent Deposit"
        }
    }
]"

编辑: 有趣的是,当我运行我的开发机器的这个字符串时,它被正确解析,但在生产服务器上它失败了。

【问题讨论】:

  • 如果引号是数据的一部分,那么它是一个字符串,而不是 JSON。

标签: javascript json


【解决方案1】:

1.这应该是您的 JSON 格式,否则 JSON.parse 将无法正确解析它

[
        {
            "pk": 1,
            "model": "pms.category",
            "fields": {
                "name": "Rent",
                "add_date": "2011-07-28 01:33:21",
                "agent": 3,
                "category_type": "I",
                "add_user": 3,
                "desc": "Rent"
            }
        },
        {
            "pk": 2,
            "model": "pms.category",
            "fields": {
                "name": "Deposit Rent",
                "add_date": "2011-07-28 01:33:21",
                "agent": 3,
                "category_type": "I",
                "add_user": 3,
                "desc": "Rent Deposit"
            }
        }
    ]

2.在你的 head 标签之间包含来自 github 存储库的 json2.js。

【讨论】:

    【解决方案2】:

    替换开始和结束引号,然后解析字符串:

    s = s.replace(/^"|"$/g, '');
    var jsonDoc = JSON.parse(s);
    

    此外,向发出错误 JSON 的程序或库的作者提交错误报告。

    【讨论】:

    • 仍然没有运气,我在 chrome 调试器上运行并且仍然出现语法错误!尝试复制字符串并在 chrome 控制台上运行它,这太棒了!!
    • @gath 如果您自己没有发现问题,请随意询问有关格式错误的 JSON 的新问题(包括指向 pastebin.com 的链接,如果它的长度超过 20 行)。也请随意拍打那个格式错误的 JSON 的作者。
    • @philag,用单引号替换外部双引号效果很好。 JSON.parse(s.replace(/^"|"$/g,"'"))。非常感谢。
    【解决方案3】:

    您可能应该从字符串中删除外引号...

    mystring = mystring.replace(/^"|"$/g,'')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多