簡體   English   中英

JSON格式錯誤

[英]JSON not well formed error

在下面的代碼中,

<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.getJSONnot well formed錯誤的錯誤是什么意思?

讓我們考慮一下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"
    }
}

[ 在線試用 ]

______

將對象放在數組中

或者,按照@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"
    }
]

[ 在線試用 ]

______

消耗解析后的JSON (其中JSON是數組)

如果將數據表示為數組,則回調應僅將生成的已解析JSON分配給accountGrid變量:

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

另外,如果您想將entry的值附加到accountGrid

accountGrid = accountGrid.concat(entry);

______

將來編寫JSON

我建議您在支持JSON語法高亮顯示的IDE中編輯JSON文件,然后在編輯器中引發這些問題。 或者, 使用許多可用的在線工具之一

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM