2014-11-01 27 views
-1

我attemptint创建一个谷歌图(表图)与下面的JavaScript:为什么这是一个无效的JSON字符串谷歌图表

<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代码工作正常,并成功函数获取调用。但Google Charts告诉我,从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对我来说看起来完全有效,所以我必须忽略一些东西。

+0

http://jsonlint.com/有很多错误,你 – meagar 2014-11-01 15:14:52

回答

1

只需使用JSON验证器工具,如http://jsonlint.com/ ......它必须比试图发现错误更快。

布尔值应该小写。

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

优秀。简直太棒了。这是问题!谢谢。 – 2014-11-01 15:19:21

1

JavaScript是大小写敏感的,你的“V”值必须是小写truefalse与你现在有什么TrueFalse。你是否在C#中手动序列化你的JSON? JSONLint是你的朋友。

+1

哇好对象,我没有看到它,因为JSON滚出右侧和裁剪。 – Sukima 2014-11-01 15:07:09

+0

@Sukima这不是一个“好主意”,这是调试中最根本的基本练习。任何人在这里的第一步应该是将其转储到JSONLint.com,JSONLint.com用一个巨大的红色错误消息尖叫着你,“v”:True'是一个解析错误。 – meagar 2014-11-01 15:16:04

+1

如果你不想要的话,我很高兴收回你的赞美。我的妻子一直在寻找更多。 – Sukima 2014-11-01 15:19:55

相关问题