Javascript 解析以“开始”开头的JSON时出错;var…“;

Javascript 解析以“开始”开头的JSON时出错;var…“;,javascript,json,Javascript,Json,我在从服务器获取JSON文件时遇到了一件小事,JSON文件包含如下内容: var reviews = [ { "firstName":"Simon", "lastName":"Lock", "fullName":"Simon Lock", "location":"San Francisco", "reviewTitle":"Super quality.. I will show here again!",

我在从服务器获取JSON文件时遇到了一件小事,JSON文件包含如下内容:

var reviews = [
    {
        "firstName":"Simon", 
        "lastName":"Lock",
        "fullName":"Simon Lock",
        "location":"San Francisco",
        "reviewTitle":"Super quality.. I will show here again!",
        "reviewBody":"Super nice quality, fast devilery, good prices. I will shop here again!",
        "starRating":"5"
    }, 
    {
        "firstName":"John", 
        "lastName":"Smith",
        "fullName":"John Smith",
        "location":"New York",
        "reviewTitle":"Princely Sum",
        "reviewBody":"A decent local curry house in Faversham, Kent known for its Elvis nights.",
        "starRating":"4"        
    },
];
正如所料,我在使用
$获取文件时出错。ajax

SyntaxError: Unexpected token v 
因为它不是一种有效的JSON格式,但我也尝试使用另一种
数据类型来实现它。
我的问题是:

有没有办法让JSON文件中的变量存储在另一个变量中,以便正常操作

我也尝试过使用
FileReader()
,但我没有为自己工作


谢谢,JSON只是一种存储数据的方式,而不是JavaScript代码。它不知道如何处理
var reviews=
。JSON文件中存储的只是数据,如下所示

[
    {
        "firstName":"Simon", 
        "lastName":"Lock",
        "fullName":"Simon Lock",
        "location":"San Francisco",
        "reviewTitle":"Super quality.. I will show here again!",
        "reviewBody":"Super nice quality, fast devilery, good prices. I will shop here again!",
        "starRating":"5"
    }, 
    {
        "firstName":"John", 
        "lastName":"Smith",
        "fullName":"John Smith",
        "location":"New York",
        "reviewTitle":"Princely Sum",
        "reviewBody":"A decent local curry house in Faversham, Kent known for its Elvis nights.",
        "starRating":"4"        
    }
]

JSON只是一种存储数据的方式,而不是JavaScript代码。它不知道如何处理
var reviews=
。JSON文件中存储的只是数据,如下所示

[
    {
        "firstName":"Simon", 
        "lastName":"Lock",
        "fullName":"Simon Lock",
        "location":"San Francisco",
        "reviewTitle":"Super quality.. I will show here again!",
        "reviewBody":"Super nice quality, fast devilery, good prices. I will shop here again!",
        "starRating":"5"
    }, 
    {
        "firstName":"John", 
        "lastName":"Smith",
        "fullName":"John Smith",
        "location":"New York",
        "reviewTitle":"Princely Sum",
        "reviewBody":"A decent local curry house in Faversham, Kent known for its Elvis nights.",
        "starRating":"4"        
    }
]

请记住,在安全性非常重要的情况下,我不建议这样做,但您可以选择对文件的纯文本使用
eval()
函数

eval('var reviews = [
  {
    "firstName":"Simon", 
    "lastName":"Lock",
    "fullName":"Simon Lock",
    "location":"San Francisco", ...
将为您提供一个包含所需对象的变量


编辑:eval是邪恶的,我知道

请记住,在安全性非常重要的情况下,我不建议这样做,但您可以选择对文件的纯文本使用
eval()
函数

eval('var reviews = [
  {
    "firstName":"Simon", 
    "lastName":"Lock",
    "fullName":"Simon Lock",
    "location":"San Francisco", ...
将为您提供一个包含所需对象的变量



编辑:是的eval是邪恶的,我知道它根本不是JSON,它是一个javascript对象。在第二个对象的末尾有一个额外的逗号。你可以用
脚本
获取它,但你需要意识到这是一个javascript程序,而不是“JSON文件”<代码>var s=document.createElement(“脚本”);s、 src=“/your/path/to/data”;文件。正文。附录子项然后在脚本加载完成后,变量将作为
窗口提供。查看
。无需对其进行解析,因为它是作为JavaScript程序进行评估的……您需要等待脚本加载后才能访问它。脚本的
onload
在旧版IE中不起作用,因此您可能需要对
窗口进行轮询。查看
。不客气。很高兴它起到了作用。它根本不是JSON,它是一个javascript对象。在第二个对象的末尾有一个额外的逗号。您可以使用
脚本
获取它,但您需要意识到这是一个javascript程序,而不是“JSON文件”<代码>var s=document.createElement(“脚本”);s、 src=“/your/path/to/data”;文件。正文。附录子项然后在脚本加载完成后,变量将作为
窗口提供。查看
。无需对其进行解析,因为它是作为JavaScript程序进行评估的……您需要等待脚本加载后才能访问它。脚本的
onload
在旧版IE中不起作用,因此您可能需要对
窗口进行轮询。查看
。不客气。很高兴它起到了作用。所以没有办法避免重复这样做,好为这些人制作一个合适的API,谢谢mate:)最后一个尾随逗号也需要删除,因为JSON不幸不允许这样做。所以没有办法避免重复这样做,好为这些人制作一个合适的API,谢谢mate:)最后一个尾随逗号也需要删除,因为不幸的是JSON不允许使用这些逗号。+1有效的解决方案,不过如果可能的话,我更愿意将其作为脚本加载。另外,使用
函数
构造函数可以避免现代浏览器在使用
eval()时经常遇到的严重性能损失。。。如下所示:
var f=new函数(my_数据);f()或在一条语句中:
新函数(my_data)()它还使用全局范围而不是本地范围。除此之外,基本上是一样的。在这种情况下,我认为substr比eval()更可取。是的,它们是邪恶的。+1是有效的解决方案,不过如果可能的话,我更愿意将其作为脚本加载。另外,使用
函数
构造函数可以避免现代浏览器在使用
eval()时经常遇到的严重性能损失。。。如下所示:
var f=new函数(my_数据);f()或在一条语句中:
新函数(my_data)()它还使用全局范围而不是本地范围。除此之外,基本上是一样的。在这种情况下,我认为substr比eval()更可取。是的,他们是邪恶的。