无法将类型 'Newtonsoft.Json.Linq.JObject' 转换为复杂类型



我有如下json,

{
"H": "Macellum",
"M": "Receive",
"A": [
{
"CustomerId": "172600",
"OrderId": "69931",
"OrderStatus": "E0",
"Buy": "A"
}
]
}

和复杂类型

public class OrderStats
{
public string CustomerId { get; set; }
public string OrderId { get; set; }
public string OrderStatus { get; set; }
public string Buy { get; set; }
}

我正在尝试如下选角,

dynamic obj = JsonConvert.DeserializeObject<dynamic>(message);
OrderStats info = (OrderStats)obj.A[0]; //exception
OrderStats info = obj.A[0] as OrderStats; //info is null

但错误如下

无法将类型"Newtonsoft.Json.Linq.JObject"转换为 OrderStatus

这个怎么样?

var str = "YOUR_JSON_HERE";
var obj = JsonConvert.DeserializeObject<dynamic>(str);
OrderStats info = ((JArray)obj.A)[0].ToObject<OrderStats>();

我发现像这样的解决方案有点微不足道,

dynamic obj = JsonConvert.DeserializeObject<dynamic>(message);
OrderStats info = JsonConvert.DeserializeObject<OrderStats>(JsonConvert.SerializeObject(obj.A[0]));

我正在审查此解决方案,但我认为没有必要使用动态键,

我这样做了,它对我来说是工作:

OrderStats info = JsonConvert.DeserializeObject(str(

它简化了您提到的其他行,但感谢您的建议,它是

对我正确

string jsonString = "{"name": "John Doe", "age": 30, "email": "johndoe@example.com"}";
// Parse the JSON string into a JObject
JObject jsonObject = JObject.Parse(jsonString);
// Convert the JObject into a complex type object
var person = jsonObject.ToObject<Person>();

最新更新