0
我有與當前的Javascript庫進行互操作使用JSON數據AJAX和JSON數據如下所示得到一個Silverlight項目:如何將複雜的JSON轉換成JS成.NET類在Silverlight
{"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;}
}
的問題是如何命名的「大限」在C#中的日期格式的字符串的時間戳轉換。我想這可能是與DEADLINE屬性中的setter訪問器有關的東西。
順便說一下,我發現奇怪的是,如果評估值本身是Javascript,那麼我不能使用ScriptObject的ConvertTo<string>()
方法。也就是說,我只能用這種方式解析字符串:
scriptObject.ToString(); //ConvertTo<string>() will not work.
這裏有什麼意思?
任何幫助將不勝感激。
謝謝,託尼。這絕對是一個可行的選擇。儘管如此,我只是想知道在目前的基礎上只需要一些小的修復就可以解決問題,因爲ConvertTo在大多數情況下都能勝任。值得注意的是,在這種情況下,當我使用該方法時,DEADLINE屬性變成了「對象」。我想可能有一些方法來手動解析它。另一方面,使用Linq到JSON或類似的東西可能不適合我的項目,這意味着我必須爲我的實體類組成一些映射代碼。無論如何,這絕對是一個解決方案。 :) – 2013-04-05 19:51:14