只是試圖從JSON創建一個匿名類型,而無需提前瞭解參數,並完全解釋它們(可能帶有提示)。即該值「看起來」像一個int,字符串或日期。如何使用JSON.Net反序列化爲匿名類型?
到目前爲止,我知道的唯一方法是創建一個您已經預先知道的匿名類型。請參閱下面的.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
在.NET 4的情況下,我假設你應該能夠反序列化爲'動態'對象,然後明確地訪問所需的屬性 – sll
如果你不知道它具有或預期的參數是什麼,你打算如何使用這個對象有? – KallDrexx
@sll:有個例子嗎?不針對動態類型。我偶爾使用它們。在這種情況下,我的下一個問題是如何將動態轉換爲匿名類型。我對任何一條路都很滿意,因爲性能不是問題,但是,在這種情況下,我需要一個匿名類型(現有的庫)。 – sgtz