正在生成Google图表JSON数组
本文关键字:图表 JSON 数组 Google | 更新日期: 2023-09-27 18:22:23
我有一个C#方法,它生成Google图表所需的JSON字符串。这样的输出看起来有点像这样:
[ [{ v: 'Mike', f: 'Mike' }, '', 'The President'], [{ v: 'Jim', f: 'Jim Vice President' }, 'Mike', 'VP'], ['Alice', 'Mike', ''], ['Bob', 'Jim', 'Bob Sponge'], ['Carol', 'Bob', ''] ]
我正试图使用getJSON
和一个返回JsonResult
的方法从我的Javascript中检索这些数据。然而,Javascript不会(正确地)将其解析为数组,因为我使用的是字符串。
我该如何克服这个问题?我想我应该从一个数组中生成我的C#JsonResult,因为这就是数据。然而,谷歌的格式并不适合这样。。。
提前谢谢。
如果文本不能成为有效的JSON,您可能需要使用eval
。。。
var arr = eval(response_string);
或者使用Function
构造函数进行评估。。。
var arr = Function('return ' + response_string)();
但在这两种情况下,请确保您信任所发送的数据。
这两种技术都会将字符串作为JavaScript代码进行评估,因此只要JavaScript语法有效,发送的任何内容都会运行。
来自文档:
重要提示:从jQuery 1.4开始,如果JSON文件包含语法错误,请求通常会以静默方式失败。因此,避免频繁手动编辑JSON数据。JSON是一种数据交换格式,其语法规则比JavaScript的对象文字符号更严格
正如一位评论者所指出的,您的JSON是无效的。此:
[ [{ v: 'Mike', f: 'Mike' }, ....
应该是:
[ [{ "v": "Mike", "f": "Mike" }, ....
还要确保JSON不会意外地被"
字符包围。您可以在此处测试JSON字符串的有效性。
完成后,传递给回调的data
应该是您要查找的数组:
$.getJSON('url.json', function(data) {
// data is the array you're looking for
});
如果您的问题是需要将结果对象转换为Charts API的字符串,请查看JSON.stringify()
。如果您需要支持不实现它的浏览器,您可以在这里找到一个链接的实现。
getJSON将解析方法返回的"字符串"结果。然而,如果您返回的JsonResult中有一个字符串作为参数,那么它只是对该字符串进行编码,然后在客户端上解析为字符串。
如果您想返回一个对象数组,那么将一个对象阵列设置为Data参数,它将自动序列化为JSON。
假设"s"是返回的字符串,x将包含JavaScript对象:
var s = "[ [{ v: 'Mike', f: 'Mike' }, '', 'The President'], [{ v: 'Jim', f: 'Jim Vice President' }, 'Mike', 'VP'], ['Alice', 'Mike', ''], ['Bob', 'Jim', 'Bob Sponge'], ['Carol', 'Bob', ''] ]"
var x = eval("y=" + s)