[英]How to deserialize using JSON.Net to an anonymous type?
只是嘗試從JSON創建一個匿名類型,而不必提前了解任何參數,並完全解釋它們(可能帶有提示)。 即該值“看起來”像int,string或date。
到目前為止,我所知道的唯一方法是創建一個你已經知道的匿名類型。 請參閱下面的.DeserializeAnonymousType(...)方法。
任何人都可以比這更好嗎? 謝謝。
var jsonString = "{\"user_id\": 1, \"user_type\": \"moderator\", \"name\": \"Fred\"}";
JToken root = JObject.Parse(jsonString);
var anonTemplate = new{user_id=0, user_type="", name="" };
var a = JsonConvert.DeserializeAnonymousType(root.ToString(), anonTemplate);
var b = JsonConvert.DeserializeObject<Object>(root.ToString()); // actually turns into a JsonObject which is something differet.
更新
我下載了dynamicduck並且正在玩它。 這種奇怪的動態“包裝”理念是否能夠以我需要的方式(可序列化等)實現?
http://weblogs.asp.net/britchie/archive/2010/08/05/json-net-dynamic-extensions.aspx
http://weblogs.asp.net/britchie/archive/2010/08/03/dynamicduck-duck-typing-in-a-dynamic-world.aspx
您可以JSON.NET反序列化到ExpandoObject
使用ExpandoObjectConverter
。
要在運行時創建一個匿名類型,它要復雜得多,看看在這個線程中跳過的箍:
你可以看到相當多的努力可能是不值得的,因為你仍然不會得到任何編譯時間安全。 所以動態或ExpandoObject是你最好的賭注。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.