如何将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.

这里有什么意义?

如何将JS中的复杂JSON转换为Silverlight中的.net类

使用Newtonsoft。JSON程序集您可以将JSON字符串解析为JToken对象,然后找到日期属性,就像使用Newtonsoft(或LINQ到JSON)将JSON反序列化为。net对象一样