0

我将一个 json 对象传递给我的 js 文件:

<script type="text/javascript" src="../js/main.js">
  { lang: 'de' }
</script>

尝试在 main.js 中获取 json 对象:

var scriptContent = $('script').filter(function () { return this.src.match(/js\/main\.js/g); }).html(),
  params = $.parseJSON( scriptContent.replace(/&quot;/g, '"') );

但这会导致以下错误:JSON.parse: expected property name or '}'

如您所见,我已经尝试替换&quot;"

我试过{ lang: "de" }而不是{ lang: 'de' }

如何让这个工作?

4

4 回答 4

4

JSON 中的属性应该用引号括起来,如下所示:

{
    "lang": "de"
}

此外,要测试 JSON 片段是否有效,您应该使用http://jsonlint.com/

于 2012-06-18T09:23:23.663 回答
2

您的代码段是不正确的 JSON。属性键也必须被引用。

要快速生成有效的 JSON(用于测试目的?),请使用JSON.stringify( some_object ),例如:

JSON.stringify({ lang: "de" });
>>> {"lang":"de"}
于 2012-06-18T09:22:40.660 回答
2

使用JsonLint验证您的 JSON 对象

{
    "lang": "de"
}
于 2012-06-18T09:23:58.750 回答
1

还添加:

scriptContent = scriptContent.replace(/\n/g, '');

删除刹车线

于 2012-06-18T09:27:05.660 回答