我正在尝试在C#dotnet core 2.2应用程序中序列化我认为是不寻常的json结构。
{
"id": "002a40a1-2e31-4663-a8d0-a4e6e2742d62",
"data": [
1,
[
"value",
false
]
]
}
尝试在c#中对数据属性建模时,我感到困惑
public class DataItem {
[JsonProperty("id")]
string id;
[JsonProperty("data")]
public object[] data;
}
我不知道如何在c#中正确建模此结构以允许Newtonsoft反序列化。
感谢您的帮助。
答案 0 :(得分:0)
如果您在运行时不知道数据是什么,则必须使用JsonExtensionDataAttribute
。
因此它将把您的“数据”抽象成JToken的字典
public class DataItem {
[JsonProperty("id")]
string id;
[JsonProperty("data")]
[JsonExtensionData]
public IDictionary<string, JToken> data;
}
您可以在此处查看更多详细信息:https://www.jerriepelser.com/blog/using-jsonextensiondata-with-jsonnet/和https://www.newtonsoft.com/json/help/html/SerializationAttributes.htm
答案 1 :(得分:0)
由于它没有结构化格式,因此建议您使用dynamic
。或者,如果您使用object[]
,则可以手动遍历每个对象并检查条件内的对象类型。
或者,您可以使用IDictionary<string, JToken>
public class DataItem {
[JsonProperty("id")]
string id;
[JsonProperty("data")]
public Dictionary<string, JToken> data;
}