我发送到highcharts的JSON有一个不一致的问题。 Highcharts并不总是拒绝JSON,但是当它做到时,手动更新JSON到一个正确的格式一直修复它:
Exmaple DotNet.Hightcharts输出:
series: [{ data: [284, 49, 100, 19], name: 'some name' }, { data: [230, 250, 219, 878], name: 'some name 2' }]
当固定为包含的引号时,它可以工作:
"series": [{ "data": [284, 49, 100, 19], "name": "some name" }, { "data": [230, 250, 219, 878], "name": "some name 2" }]
有没有办法让DotNet.Hightcharts输出这种格式?
答案 0 :(得分:1)
查看DotNet.Highcharts源代码,它似乎使用自己的JsonSerializer,它不引用属性名称,并且没有选项可以更改此行为,也无法将序列化程序替换为另一个。他们已经直接改变了代码中的格式,所以看起来改变了以下几行:DotNet.Highcharts/JsonSerializer.cs应该做你需要的:
const string JSON_PROPERTY_WITH_VALUE_FORMAT = "{0}: {1}";
const string JSON_STRING_FORMAT = "'{0}'";
成为:
const string JSON_PROPERTY_WITH_VALUE_FORMAT = "{\"0\"}: {1}";
const string JSON_STRING_FORMAT = "\"{0}\"";
所以我说你的选择是:
使用上述更改的源代码编译您自己的DotNet.Highcharts版本。
说服项目开发人员在下一版本中包含此类更改。
使用替代库,例如Highcharts.Net,默认情况下会引用名称。
根本不使用任何库,只需使用像Newtonsoft.Json这样的独立Json格式化程序将数据渲染到手工编码的Highcharts javascript中的文字中。
在上述任何一种情况之前,这个问题只会随着更多数据的添加而出现,这听起来有点奇怪。它不只是你的数据中的撇号情况打破格式吗?他们似乎没有在格式化程序中被转义。