【发布时间】:2019-11-14 12:26:30
【问题描述】:
如果我没有模型,是否可以将 JSON 转换为匿名对象?
这是一个带有模型的示例:
var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}";
var model = new { firstName = "", lastName = "" };
var result = JsonConvert.DeserializeAnonymousType(json, model);
//result: { firstName = John Doe, lastName = Doe }
如果我不知道示例中的数据结构,该怎么做?
问题是我实际上正在使用一些库,如果我将动态对象作为参数传递,它就不起作用。 我需要使用的方法的唯一方法是传递一个匿名对象,例如:
instance.SomeMethod(new { firstName = "John", lastName = "Doe" })
【问题讨论】:
-
你考虑过
dynamic吗? -
问题是:接下来你想做什么?下一行中的代码如何与该对象交互?你想访问任何财产吗?您怎么知道该物业的名称?
-
按照下面的建议反序列化为
dynamic会产生JObject。ExpandoObject将是另一个可能与您的 3rd 方库一起使用的选项,请参阅 How to deserialize using JSON.Net to an anonymous type?。真正在运行时创建匿名类型对象是非常困难的,见How to create LINQ Expression Tree to select an anonymous type。
标签: c# json .net-core json.net