如何在没有开始和结束字符串引号的情况下解析json字符串?

时间:2011-08-12 12:39:18

标签: javascript json

如何在没有开始和结束引号的情况下解析以下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"
        }
    }
]"

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

你应该删除字符串中的外部引号......

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

答案 2 :(得分: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.在你的头部标签之间包含github存储库中的json2.js。