在没有 JsonProperty 的情况下将 JSON 解析为 class
Parse JSON into class without JsonProperty
示例数据:
{
"status": "success",
"data": {
"01234": {
"001": "20",
"123": "10"
},
"56789": {
"001": "100",
"328": "5"
}
}
}
我想检查以确保 "status" = "success",如果是,则将 "data" 扁平化为更多的关系结构以存储在关系数据库中。从上面看,它看起来像:
Product Location Quantity
01234 001 20
01234 123 10
56789 001 100
56789 328 5
我的理解是,因为“01234”和“56789”会发生变化,所以我无法创建 class 来反序列化为使用 JsonProperty。
如何将其反序列化为 class?不使用 class 进行反序列化会更容易吗?
编辑
我能够根据接受的答案让它工作,但我想知道为什么这不起作用(这是我在发布此问题之前尝试的):
public class FindResponse {
[JsonProperty("status")]
public string status { get; set; }
[JsonProperty("data")]
public FindResponseData data { get; set; }
}
public class FindResponseData {
public Dictionary<string, Dictionary<string, int>> sku { get; set; }
}
//This doesn't work; the "data" in the "result" object was null.
var result = JsonConvert.DeserializeObject<FindResponse>(skusJson);
您可以如下创建 class,并尝试使用 deserialization 之后的字典值映射数据。可能不是更好的方法,但它会适合您的数据模型。
public class MyClass {
public string Status { get; set; }
public Dictionary<string, Dictionary<string, string>> Data { get; set; }
}
//and then
var data = JsonConvert.DeserializeObject<MyClass>(jsonContent);
示例数据:
{
"status": "success",
"data": {
"01234": {
"001": "20",
"123": "10"
},
"56789": {
"001": "100",
"328": "5"
}
}
}
我想检查以确保 "status" = "success",如果是,则将 "data" 扁平化为更多的关系结构以存储在关系数据库中。从上面看,它看起来像:
Product Location Quantity
01234 001 20
01234 123 10
56789 001 100
56789 328 5
我的理解是,因为“01234”和“56789”会发生变化,所以我无法创建 class 来反序列化为使用 JsonProperty。
如何将其反序列化为 class?不使用 class 进行反序列化会更容易吗?
编辑
我能够根据接受的答案让它工作,但我想知道为什么这不起作用(这是我在发布此问题之前尝试的):
public class FindResponse {
[JsonProperty("status")]
public string status { get; set; }
[JsonProperty("data")]
public FindResponseData data { get; set; }
}
public class FindResponseData {
public Dictionary<string, Dictionary<string, int>> sku { get; set; }
}
//This doesn't work; the "data" in the "result" object was null.
var result = JsonConvert.DeserializeObject<FindResponse>(skusJson);
您可以如下创建 class,并尝试使用 deserialization 之后的字典值映射数据。可能不是更好的方法,但它会适合您的数据模型。
public class MyClass {
public string Status { get; set; }
public Dictionary<string, Dictionary<string, string>> Data { get; set; }
}
//and then
var data = JsonConvert.DeserializeObject<MyClass>(jsonContent);