简体   繁体   English

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

[英]error while using JSON.parse() in JavaScript

I have following data in JSON format and I want to parse in in JavaScript. 我有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"}}}

When I use the console of Google Chrome to do that it gives me an error. 当我使用Google Chrome浏览器进行操作时,它给我一个错误。 I want to write following lines: 我想写以下几行:

var json = MY_DATA;
JSON.parse(json);

But when I want to assign my data to json the console gives me following error 但是当我想将数据分配给json ,控制台会显示以下错误

Uncaught SyntaxError: Unexpected identifier(…)

What is the problem? 问题是什么?

It looks like your JSON is already parsed to an object. 看来您的JSON已经被解析为一个对象。 You then try to parse it again and it is confused. 然后,您尝试再次解析它,并且感到困惑。

This is a pretty common mistake. 这是一个很常见的错误。

Some functionalities in jQuery automatically parse JSON and don't need to be explicitly told to. jQuery中的某些功能会自动解析JSON,无需明确告知。

@Adosi has already answered this correctly but I was adding an example so I'll include it anyway as it's too long for a comment. @Adosi已经正确回答了这个问题,但是我添加了一个示例,所以无论如何我都将其包括在内,因为评论太长了。 Add this to your code and open up your browser's console. 将此添加到您的代码,并打开浏览器的控制台。

console.clear();

// your original data
var json = MY_DATA;
console.info("var json is a", typeof json);
console.log('json.id:', json.id); 

// when json is stored as a string, it needs to be parsed.
// let's convert it back into a string and see what happens
var json_needing_parsing = JSON.stringify(json)
console.info("var json_needing_parsing is a", typeof json_needing_parsing);
console.log('json_needing_parsing.id:', json_needing_parsing.id); //undefined

// That didn't work. Let's parse it.
var json_parsed = JSON.parse(json_needing_parsing);
console.info("var json_parsed is a", typeof json_parsed);
console.log("json_parsed.id:", json_parsed.id);

Here it is in action. 它在起作用。 http://jsfiddle.net/qn9xkt7c/ (because the Stack Snippet editor was cross at me for the giant json object) http://jsfiddle.net/qn9xkt7c/ (因为Stack Snippet编辑器对我遇到了巨大的json对象)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM