只是尝试从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.
Run Code Online (Sandbox Code Playgroud)
更新
我下载了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是你最好的赌注.
| 归档时间: |
|
| 查看次数: |
6948 次 |
| 最近记录: |