如果我没有模型,是否可以将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" })
答案 0 :(得分:3)
您可以将dynamic
与DeserializeObject
一起使用:
var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}";
var result = JsonConvert.DeserializeObject<dynamic>(json);
var firstName = result.firstName;
答案 1 :(得分:1)
您可以使用dynamic
类型,但是如果在Xamarin中工作,则需要包含一个名为Microsoft.CSharp
的引用。
这里是例子:
var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}";
dynamic x = JsonConvert.DeserializeObject(json);
Console.WriteLine(x.firstname.ToString());
//You'll need to convert to data type especially in boolean, int, float, double
这是将object
转换为json
的地方:
dynamic x = new ExpandoObject();
x.param1 = "";
x.param2 = "";
string json = JsonConvert.SerializeObject(x);
答案 2 :(得分:1)
使用动态:
var json = "{\"firstName\": \"John Doe\", \"lastName\": \"Doe\"}";
dynamic result = JsonConvert.DeserializeObject(json);
您还可以在访问该属性之前检查该属性是否存在,并使用以下代码避免崩溃:
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(result .ToString());
if (dictionary.ContainsKey("firstName"))
//do something with "firstName"
希望它能起作用
答案 3 :(得分:-2)
尝试使用GSon,您应该导入依赖项