0

我有一个 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 访问器有关。

ConvertTo<string>()顺便说一句,如果评估的值是 Javascript 中的字符串本身,我就不能使用 ScriptObject 的方法,这很奇怪。即,我只能以这种方式解析字符串:

scriptObject.ToString();  //ConvertTo<string>() will not work.

这里有什么意义?

任何帮助将不胜感激。

4

1 回答 1

1

使用 Newtonsoft.JSON 程序集,您可以将 json 字符串解析为 JToken 对象,然后找到 date 属性,就像对这个问题Deserializing JSON to .NET object using Newtonsoft(或 LINQ to JSON 可能?)

于 2013-04-05T13:17:59.610 回答