如何将JS中的复杂JSON转换为Silverlight中的.net类
本文关键字:转换 Silverlight 中的 net JSON 复杂 JS | 更新日期: 2023-09-27 18:07:52
我有一个Silverlight项目,它必须与当前的Javascript库互操作,使用AJAX获取JSON数据,JSON数据如下:
{"javaClass":"java.util.ArrayList","list":[{"JOB_NUM":"21", "DEADLINE":{"time":1359583200000,"javaClass":"java.sql.Timestamp"}, "javaClass":"JobEntity"}]}
在Silverlight中,我创建了一个"桥接"类来将JSON数据转换为c#类。主要方法如下:
public static T Invoke<T>(string method)
{
ScriptObject result = HtmlPage.Window.Eval("$.parseJSON("+method+")") as ScriptObject;
if (result != null)
{
ScriptObject data = result.GetProperty("list") as ScriptObject;
if (data != null)
return data.ConvertTo<T>();
}
return default(T);
}
另外,我在这里附加了实体POCO类(简化)。
public class JobEntity
{
public string JOB_NUM {get; set;}
public string DEADLINE {get; set;}
}
问题是如何将名为"DEADLINE"的时间戳转换为c#中的日期格式字符串。我猜这可能与DEADLINE属性中的setter访问器有关。
顺便说一句,我发现它很奇怪,我不能使用ScriptObject的ConvertTo<string>()
方法,如果评估的值是一个字符串本身在Javascript。也就是说,我只能用这种方式解析字符串:
scriptObject.ToString(); //ConvertTo<string>() will not work.
这里有什么意义?
使用Newtonsoft。JSON程序集您可以将JSON字符串解析为JToken对象,然后找到日期属性,就像使用Newtonsoft(或LINQ到JSON)将JSON反序列化为。net对象一样