JSON.parse:为什么这不起作用

JSON.parse:为什么这不起作用

问题描述:

我有一个JSON:JSON.parse:为什么这不起作用

$.ajax({ 
     type: "POST", 
     url: myUrl, 
     success: function (result) { 
      var data = JSON.parse(result); 
      for (var i = 0; i < data.poles.length; i++) { 
      .... 

我在调试器中看到的是:

data = "{"poles":[{"id":36,"name":"AUVERGNE"},{"id":44,"name":"Alsace"},{"id":42,"name":"Artois"},....],"poleNumber":48} 

但我得到一个消息,说data.poles没有定义

我想错过什么?

+0

我想'data'是一个字符串,你只是使用了错误类型的字符串文字。如果它是一个字符串,那么它显然不是一个对象 – MinusFour

+3

为什么'{'在引号中?我认为你的引号是倒置的,'poles'应该用引号括起来,括号不应该是,我认为你的对象实际上是正确的,如果你刚刚删除了第一个'' '在你的第一个'{'之前。 – zero298

+0

我编辑了我的消息给出了完整的上下文 – Lempkin

Json好吗?

{"poles":[{"id":36,"name":"AUVERGNE"},{"id":44,"name":"Alsace"},{"id":42,"name":"Artois"}],"poleNumber":48} 

编辑:

好吧,如果你有这样的JSON:

data = {"poles":[{"id":36,"name":"AUVERGNE"},{"id":44,"name":"Alsace"},{"id":42,"name":"Artois"}],"poleNumber":48} 

可以使data.poles完美。删除第一个”,你有一个错误的JSON,所以你永远不会解析

"{"poles":[{"id":36,"name":"AUVERGNE"},{"id":44,"name":"Alsace"},{"id":42,"name":"Artois"}],"poleNumber":48} 
+0

http://jsonlint.com/是的这是有效的 – Lempkin

+0

哦,我明白了,你的意思是我不应该得到第一个双引号{ – Lempkin

+0

是的,确切地说。你必须删除第一个双“ –