使用 Json.NET lib 通过 json 发送 javascript 函数
我正在尝试通过 .Net 中的 json 发送 javascript 函数,但在序列化对象时遇到问题。
javascript 库 Highcharts 在其 json 对象上使用以下函数来自定义图表工具提示。
tooltip: {
formatter: function() {
var s;
if (this.point.name) { // the pie chart
s = ''+
this.point.name +': '+ this.y +' fruits';
} else {
s = ''+
this.x +': '+ this.y;
}
return s;
}
},
我正在尝试使用流行的 Json.NET 库,使用匿名类型来创建此类对象,但我所有的努力都序列化最后到一个字符串。任何帮助表示赞赏。谢谢!
I am attempting to send a javascript function over json in .Net and I am having trouble serializing the object.
The javascript library Highcharts uses the following function on their json object to customize the chart tooltip.
tooltip: {
formatter: function() {
var s;
if (this.point.name) { // the pie chart
s = ''+
this.point.name +': '+ this.y +' fruits';
} else {
s = ''+
this.x +': '+ this.y;
}
return s;
}
},
I am attempting to use the popular Json.NET library using an anonymous type to create such object but all my efforts serialize to a string in the end. Any help is appreciated. Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我喜欢 ObOzOne 的答案,但通过使用 WriteRawValue 可以更简单一些。例如:
然后在您想要序列化的属性上:
I like the answer from ObOzOne, but it can be a little simpler by just using the WriteRawValue. For example:
And then on your property that you want to serialize:
JSON 顾名思义,只是一种对象表示法,适合将状态作为对象传输。
如果您需要发送 JavaScript 代码本身,可以使用 ASP NET MVC 中的 JavaScriptResult(如果您正在使用它)。
如果您使用 ASP NET Web 窗体,请拥有一个 ASPX 文件,该文件将 JavaScript 直接写入响应。确保将
ContentType
更改为text/javascript
。JSON as the name implies, is only an object notation and suitable for transferring state as object.
If you need to send JavaScript code itself, you can use a JavaScriptResult in ASP NET MVC if you are using it.
If you are using ASP NET Web Forms, have an ASPX file which writes the JavaScript straight to the response. Make sure you change the
ContentType
totext/javascript
.从 Newtonsoft.Json 12.0.1 (11/27/2018) 开始,标准解决方案是使用 Jraw 类型。
来源
As of Newtonsoft.Json 12.0.1 (11/27/2018), the standard solution for this is to use JRaw type.
Source
有点黑客,但我这样解决了它:
通过用 FUNC 占位符包围我的函数,然后用生成的 json 中的空字符串替换“FUNC 和 FUNC”,我在 json 对象中得到了该函数。
A bit of a hack but I solved it this way:
By surrounding my function with the FUNC placeholders and then replacing "FUNC and FUNC" with emtpy string in the generated json I get the function in my json object.
我受到上面示例中通用方法的启发:
以及模型数据:
I was inspired by the example above by generic methods :
And the model data :