2016-01-06 75 views
0

在下面的代码,JSON不能很好形成错误

<head> 
     <meta charset="UTF-8"> 
     <title>JSON ex</title> 
     <script type = "text/javascript" 
      src = "http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"> 
     </script> 

     <script type="text/javascript" language = "javascript"> 
      var accountGrid = []; 
      $(document).ready(function(){ 
       $.getJSON('result.json', function(entry){ 
        accountGrid.push({ 
         name: entry.name, 
         marketValue: entry.marketValue, 
         cash: entry.cash, 
         legend: entry.legend 
        }); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 

    </body> 

result.json

{ 
    'name': 'Account1', 
    'marketValue': '10990', 
    'cash': '199926', 
    'legend': 'orange' 
}, 
{ 
    'name': 'Account2', 
    'marketValue': '156590', 
    'cash': '133856', 
    'legend': 'darkorange' 
} 

我看到JSON not well formed错误。 result.json坐在同一个文件夹中。

由于此错误,accountGrid变空。

在执行jQuery.getJSON时出错not well formed是什么意思?

+2

您可以使用在线/脱机验证程序来验证您的JSON。 – Drumbeg

回答

6

让我们考虑grammar of JSON ...

JSON必须是单个值(对象,数组等)

的JSON对象应该是一个单一的值。你有两个用逗号分开的对象。也许你可以将它们分配为单个对象的成员。

# a JSON object consists of a single value definition 
value 
    string 
    number 
    object 
    array 
    true 
    false 
    null 

# this value can be an object 
object 
    {} 
    { members } 

# or an array 
array 
    [] 
    [ elements ] 

______

单引号是非法

JSON禁止使用单引号(')的字符串。

# a string consists of chars wrapped in double-quotation marks 
string 
    "" 
    " chars " 

因此,将所有单引号替换为双引号。

考虑上述两种东西,你将结束与这样的:

{ 
    "key1": { 
     "name": "Brokerage Account 3", 
     "marketValue": "1999990", 
     "cash": "1995826", 
     "legend": "orange" 
    }, 
    "key2": { 
     "name": "Account 3", 
     "marketValue": "1949990", 
     "cash": "1695856", 
     "legend": "darkorange" 
    } 
} 

[Try it out online]

______

放置在阵列内的对象

替代地,正如@Gerald Schneider所建议的那样,将对象放置在一个数组中。该规范指出,value(上面定义的)可以是array

array 
    [] 
    [ elements ] # elements can multiple values, e.g. objects 

所以,你的JSON应该是这样的:

[ 
    { 
     "name": "Account1", 
     "marketValue": "10990", 
     "cash": "199926", 
     "legend": "orange" 
    }, 
    { 
     "name": "Account2", 
     "marketValue": "156590", 
     "cash": "133856", 
     "legend": "darkorange" 
    } 
] 

[Try it out online]

______

消费解析的JSON(其中JSON是一个数组)

如果你代表你的数据作为一个数组,你的回调应该简单地分配所产生的解析的JSON给accountGrid变量:

<script type="text/javascript" language = "javascript"> 
    var accountGrid = []; 
    $(document).ready(function(){ 
     $.getJSON('result.json', function(entry){ 
      accountGrid = entry; 
     }); 
    }); 
</script> 

另外,如果你想进入的价值附加到accountGrid

accountGrid = accountGrid.concat(entry); 

______

写作JSON在未来

我建议您在支持JSON语法高亮的IDE中编辑JSON文件,然后在编辑器中引发这些问题。或者,use one of the many online tools available

+2

就我个人而言,我只是把它放在'[]'中而已。使循环更容易。 –

+0

我使用数组语法在行1:1处得到语法错误 – overexchange

+0

[在此尝试](http://www.jsoneditoronline.org/?id=572498b110113540bd833c1e3de7fed0)。 – sdgluck

相关问题