在JavaScript中使用JSON.parse()时出错

在JavaScript中使用JSON.parse()时出错,javascript,json,Javascript,Json,我有以下JSON格式的数据,我想用JavaScript解析 {"id":"897868990272958","posts":{"data":[{"id":"897868990272958_965738636819326","message":"As you are now aware, Federal elections have to be financed by personal donations only. To support my campaign, there is still t

我有以下JSON格式的数据,我想用JavaScript解析

{"id":"897868990272958","posts":{"data":[{"id":"897868990272958_965738636819326","message":"As you are now aware, Federal elections have to be financed by personal donations only. To support my campaign, there is still tickets for my cocktail of Aug.27. at Balmoral's Community center. A 75% tax credit will be given for the net value of the ticket after expenses (+/- 33,75$ back into your pockets).\n\nComme vous le savez, les élections fédérales ne sont financées que par des dons personnels. Afin d'encourager ma campagne, il reste toujours des billets pour le cocktail du 27 août au centre communautaire de Balmoral. Un crédit d'impôt de 75% vous sera retourné sur la valeur net du billet après dépenses (+/- 33,75$ de retour dans vos poches).\n\nTo reserve tickets/pour réserver des billets: 753-6121.","comments":{"data":[{"id":"965738636819326_966081753451681","message":"je t'encourage mon rene mes indisponible ce soir"}],"paging":{"cursors":{"after":"MQ==","before":"MQ=="}}}},{"id":"897868990272958_965083470218176","message":"Hier, Haut-Madawaska !\n\nVisite d'entreprises et quelques poignées de mains à Clair et Baker Brook.  Une visite éclaire à Saint-Hilaire et Edmundston puis, en soirée, rencontre avec le conseil municipal du Lac Baker.  Le Haut-Madawaska est un exemple d'entrepreneurship  et d'esprit d'initiative.  Le chômage y est à zéro et on manque de travailleurs.   Pas besoin d'envier la Beauce.  À preuve, cette Coopérative qui vient de naitre à Clair et dont l'objectif ultime est de créer de l'emploi à partir de nos ressources à portée de main, et de miser sur la transformation.  Bravo à tous ces convaincus et bénévoles qui ne jurent que par le mouvement coopératif et l'esprit communautaire.\n\nBravo aussi au conseil municipal et au maire suppléant du Lac Baker pour leur dévouement et l'énergie qu'ils mettent à protéger et développer ce bijoux de village.\n\nÀ entendre les gens que nous croisons, dans la rue ou dans les usines, nous recevons une oreille très attentive au Plan des libéraux, relativement à la classe moyenne.  Il ne fait aucun doute, le vent tourne !"},{"id":"897868990272958_962429560483567","message":"Venez me rencontrer pour un cocktail !!!\nPour réserver votre billet, communiquez avec nous au quartier général libéral au 753-6121 (15 rue water, Campbellton NB)\n****************************************\nCome and meet me for a cocktail !!!\nTo reserve your tickets, please contact us at the liberal campaign office at 753-6121 (15 Water street, Campbellton NB)"},{"id":"897868990272958_961763833883473","message":"Hier, 18 août, visite de deux conseils municipaux coup sur coup !\n\nD'abord Balmoral. Comme d'autres municipalités de taille équivalente que j'ai déjà rencontrées, un conseil maitrisant ses dossiers avec des projets responsables et raisonnables à portée de réalisation. Il ne manque que la collaboration du fédéral qui n'est que trop absent. Bravo pour ce dynamisme.\n\nEnsuite Dalhousie. Comment ne pas lever son chapeau au maire Tremblay et ses conseillers et conseillères. Ils se battent pour notre petite ville du Restigouche-Est qui a subi des pertes de revenus «drastiques» suivant la fermeture du moulin et celle du plan thermique d'ÉNB. They are facing big challenges and they will have difficult decisions to take. We know the town's council will take those decisions in the best interest of it's community in mind. I will be there with an attentive ear to support their projets."},{"id":"897868990272958_961114093948447","message":"Aujourd'hui, Saint-Léonard au Rendez-vous des artistes !\n\nGrosse chaleur d'été, de beaux tableaux, de belles sculptures, des artistes extraordinaires et des gens qui nous laissent toujours entendre que... le vent tourne ! Je suis revenu à la maison avec ce tableau de circonstance en cette fin de semaine du 15 août. Merci à l'artiste-peintre Péruse. Surtout, toutes nos félicitations aux bénévoles qui ont encore fait un succès de ce rendez-vous des artistes.\n\nWarm day at «Le rendez-vous des artistes\". We saw beautiful paintings, sculpturs, and talked with interesting artists. And how pleasant it was to meet people. They surely let us know that the tide is turning ! I came back home with this beautiful painting right on the point for the ending weekend of the Acadian day. Thanks to artist-painter Péruse. Also, congratulations to all volunteers that made this artists gathering a success."}],"paging":{"previous":"https://graph.facebook.com/v2.4/897868990272958/posts?limit=5&fields=comments.limit%2815%29%7Bcomments%7Bmessage%7D,message%7D,message&since=1440606601&__paging_token=enc_AdD9KfoIkGsvwvKGKPHUvyEPbhuF2RoK63BKHTPw7tovNNMLZAZApH668RXKwpdMnnp7D6psZAc7wZAh0DlYIFoNPsjXjzfML0qyh30Oasasv9pyZAAZDZD&__previous=1","next":"https://graph.facebook.com/v2.4/897868990272958/posts?limit=5&fields=comments.limit%2815%29%7Bcomments%7Bmessage%7D,message%7D,message&until=1439765409&__paging_token=enc_AdDayGW6NPPTZA7gGT2HgRGZAVqinlc7ijLdPwYbZBexBpuBejfIzGdM42uW1GbO8epju5j8dDNv8qJ1lY8SMLZBZBQ3J0cIywdzQclw8KmqXv8HWlgZDZD"}}}
当我使用谷歌Chrome的控制台来做这件事时,它会给我一个错误。我想写以下几行:

var json = MY_DATA;
JSON.parse(json);
但是当我想将数据分配给
json
时,控制台会给出以下错误

Uncaught SyntaxError: Unexpected identifier(…)

问题出在哪里?

看起来您的JSON已经被解析为对象。然后,您尝试再次解析它,结果它被弄糊涂了

这是一个相当常见的错误


jQuery中的一些功能会自动解析JSON,不需要显式地告诉它。

看起来您的JSON已经解析为对象。然后,您尝试再次解析它,结果它被弄糊涂了

这是一个相当常见的错误


jQuery中的一些功能自动解析JSON,无需明确告知。

@Adosi已经正确回答了这一问题,但我添加了一个示例,因此无论如何我都会包含它,因为它对于注释来说太长了。将其添加到代码中并打开浏览器控制台

console.clear();
//您的原始数据
var json=MY_数据;
info(“var json是一个”,typeof json);
log('json.id:',json.id');
//当json存储为字符串时,需要对其进行解析。
//让我们把它转换回字符串,看看会发生什么
var json_\u parsing=json.stringify(json)
info(“需要解析的var json\u是一个”,需要解析的json\u类型);
log('json_需要_解析.id:',json_需要_解析.id')//未定义
//那没用。让我们分析它。
var json_parsed=json.parse(json_需要_解析);
info(“var json_parsed是一个”,typeof json_parsed);
log(“json_parsed.id:”,json_parsed.id);

在这里,它正在发挥作用。(因为Stack Snippet editor对巨型json对象很生气)

@Adosi已经正确地回答了这个问题,但我添加了一个示例,所以我还是要包含它,因为它太长了,无法添加注释。将其添加到代码中并打开浏览器控制台

console.clear();
//您的原始数据
var json=MY_数据;
info(“var json是一个”,typeof json);
log('json.id:',json.id');
//当json存储为字符串时,需要对其进行解析。
//让我们把它转换回字符串,看看会发生什么
var json_\u parsing=json.stringify(json)
info(“需要解析的var json\u是一个”,需要解析的json\u类型);
log('json_需要_解析.id:',json_需要_解析.id')//未定义
//那没用。让我们分析它。
var json_parsed=json.parse(json_需要_解析);
info(“var json_parsed是一个”,typeof json_parsed);
log(“json_parsed.id:”,json_parsed.id);

在这里,它正在发挥作用。(因为对于巨大的json对象,堆栈代码段编辑器对我很生气)

OK!那么我对解析的定义可能是错误的!!实际上,我需要的是一个对象,比如说一个数组包含JSON数据中的所有(变量、值)对。这在JavaScript中是可能的吗?那么如何创建这样的对象呢?我很抱歉,但我真的不明白为什么我会出错!!?我只有一个JSON格式的字符串(我在问题中提到的那个)-如何使一个对象包含该字符串的(变量,值)对?我应该自己解析字符串,还是已经有JavaScript库可以帮我解析了?好的!那么我对解析的定义可能是错误的!!实际上,我需要的是一个对象,比如说一个数组包含JSON数据中的所有(变量、值)对。这在JavaScript中是可能的吗?那么如何创建这样的对象呢?我很抱歉,但我真的不明白为什么我会出错!!?我只有一个JSON格式的字符串(我在问题中提到的那个)-如何使一个对象包含该字符串的(变量,值)对?我应该自己解析字符串,还是已经有JavaScript库可以帮我解析了?谢谢你的解释。但我的问题是,我无法将问题中提到的字符串分配给变量
json
。。。浏览器给了我一个错误(我在问题中提到的错误)——我的问题是我无法将我的值赋给
json
变量。为什么会这样?@Suo6613制作一个堆栈片段或JSFiddle来演示这个问题?刚刚添加了一个链接到一个JSFIDLE,使其正常工作,那么您的代码中可能还存在其他问题?噢!在您提供的链接中,您没有用双引号括住MY_数据的值!!为什么?当我把数据放在双引号中时,它给了我一个错误!!我不应该把json格式放在双引号中吗?!通过在
MY_DATA
周围添加引号,
var json=“MY_DATA”
将变量
json
设置为等于文本字符串
“MY_DATA”
,而不是变量
MY_DATA
中存储的任何内容。将其放入控制台,然后添加
console.log(typeof json);console.log(json.split(“”))你会看到它是一个字符串。不管它值多少钱,如果你把它放到JSFIDLE中,你会立即得到你的答案,因为很多人会立即发现你的报价问题。这很容易做到,如果你不熟悉它,决定花5分钟熟悉它!它会很快回报你的:。额外的好处:通常当你试图减少你的问题,以适应其他人的小提琴,你带走了足够多的外来黏合剂,你自己发现它。我无法计算有多少未列出的问题,因为我在创建JSFIDLE时看到了这个问题。谢谢您的解释。但我的问题是,我无法将问题中提到的字符串分配给变量
json
。。。浏览器给了我一个错误(我在问题中提到的错误)——我的问题是我无法将我的值赋给
json
变量。为什么会这样?@Suo6613制作一个堆栈片段或JSFiddle来演示这个问题?刚刚添加了一个指向J的链接