为什么这是谷歌图表的无效JSON字符串

Why is this an invalid JSON string for Google Charts

本文关键字:无效 JSON 字符串 谷歌 为什么      更新时间:2023-09-26

我试图用以下JavaScript创建一个谷歌图表(表格图表):

<script>
    function drawChart() {
        var options = {
            width: 700
        };
        $.getJSON('/LifeListComparison/GetComparison', null, function (jsonData) {
        }).success(function (jsonData) {
            data = new google.visualization.DataTable(jsonData);
            chart = new google.visualization.Table(document.getElementById('GoogleTable'));
            chart.draw(data, options);
        }).fail(function (jqXHR, textStatus, errorThrown) {
            alert('Error: ' + textStatus + ' ' + errorThrown);
        });
    }
    google.load('visualization', '1.0', {
        'packages': ['table'],
        'callback': drawChart
    });
</script>

JS代码运行良好,成功函数正在被调用。然而,GoogleCharts告诉我,从C#服务方法返回的JSON是无效的。JSON如下:

{
    "cols": [
        {"type": "string" ,"label": "Common Name" }, 
        {"type": "string" ,"label": "Scientific Name" }, 
        {"type": "number" ,"label": "Sort Order" }, 
        {"type": "number" ,"label": "Period 1" }, 
        {"type": "number" ,"label": "Period 2" }, 
        {"type": "number" ,"label": "Period 3" }, 
        {"type": "number" ,"label": "Period 4" }, 
        {"type": "number" ,"label": "Period 5" }
        ], 
    "rows" : [
        {"c" : [{"v": "American Coot"}, {"v": "Fulica americana"}, {"v": 3615}, {"v": True}, {"v": True}, {"v": False}, {"v": False}, {"v": False}]}, 
        {"c" : [{"v": "American Crow"}, {"v": "Corvus brachyrhynchos"}, {"v": 19073}, {"v": True}, {"v": False}, {"v": False}, {"v": False}, {"v": False}]}
        ]
}

JSON对我来说非常有效,所以我一定忽略了一些东西。

只需使用JSON验证器工具,如http://jsonlint.com/。。。这肯定比试图发现错误要快。

布尔应该降低。

Parse error on line 49:
...               "v": True               
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

JavaScript区分大小写,与现在的TrueFalse相比,"v"的值需要是小写的truefalse。您是否在C#中手动序列化JSON?JSONLint是你的朋友。