Jor*_*ork 4 javascript c# serialization json highcharts
我正在尝试使用C#创建在jQuery中创建对象所需的json.json需要的是
{
title: 'title text',
upperVal: 40,
lowerVal: 5,
mouseover: function() { return 'difference ' + (upperVal - lowerVal); }
}
Run Code Online (Sandbox Code Playgroud)
前几个元素很简单.我创建了一个表示对象JSObj的类,然后通过JavascriptSerializer.Serialize()运行它
public class JSObj {
public string title { get; set; }
public int upperVal { get; set; }
public int lowerVal { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这适用于前几个属性,但我不知道如何返回正确的鼠标悬停功能.
编辑:提供的代码只是示例代码,因为我实际使用的json的结构有点复杂.我正在使用HighCharts,我真正需要使用的配置选项之一需要一个功能,即使它们不是真正有效的json(http://www.highcharts.com/ref/#tooltip--formatter)所以不幸的是我无法避免这个问题
来自JSON格式定义http://json.org/很明显你不能拥有JSON中的函数.
在应用程序的其他位置定义您的函数并显式调用它
任何类型的hack来支持JSON中的函数都是不好的做法,因为它与JSON的目的相冲突是"轻量级数据交换格式".你不能交换功能,因为除了javascript之外别的东西都无法理解它们.
我试图完成类似的事情.在我的情况下,我使用MVC Razor语法尝试使用@ <text>语法生成一个传入函数的json对象.
我能够使用Json.net库(使用JsonConvert和JRaw)获得所需的输出. http://james.newtonking.com/projects/json/help/html/SerializeRawJson.htm
例:
public class JSObj
{
public string Title { get; set; }
public int UpperVal { get; set; }
public int LowerVal { get; set; }
public object MouseOver
{
get
{
// use JRaw to set the value of the anonymous function
return new JRaw(string.Format(@"function(){{ return {0}; }}", UpperVal - LowerVal));
}
}
}
// and then serialize using the JsonConvert class
var obj = new JSObj { Title = "Test", LowerVal = 4, UpperVal = 10 };
var jsonObj = JsonConvert.SerializeObject(obj);
Run Code Online (Sandbox Code Playgroud)
那应该是你带有函数的json对象(而不是字符串中的函数).
{"Title":"Test","UpperVal":10,"LowerVal":4,"MouseOver":function(){ return 6; }}
Run Code Online (Sandbox Code Playgroud)
发布: 如何将函数序列化为json(使用razor @ <text>)
| 归档时间: |
|
| 查看次数: |
3854 次 |
| 最近记录: |