我正在尝试解析一个 JSON 对象,如下所示,其中标头对象是随机字母数字。此外,有时 JSON 可能只包含一个对象。{ "48ce0e9a-ee27-4e7b-93a5-4f219974f62c": { "preview": { "FRONT": "https://123avb.jpg", "INSIDE_TOP": "https://456ihn.jpg", "INSIDE_BOTTOM": "https://987ung.jpg", "BACK": "https://ikh980.jpg" }, "print": { "primary": "https://iifuer.pdf", "secondary": "https://09e491.pdf" } }, "d767e1a6-7afe-4d17-85f7-d512a0ca0b14": { "preview": { "FRONT": "https://0ff7cc7.jpg", "BACK": "https://64e7a8.jpg" }, "print": { "primary": "https://73fbdc.pdf" } }}我为这些对象创建了类:namespace FulfillmentModel{ public class Baseclass { public G1 G1 { get; set; } public Env Env1 { get; set; } } public class Preview { [JsonProperty("FRONT")] public string FRONT { get; set; } [JsonProperty("INSIDE_TOP")] public string INSIDE_TOP { get; set; } [JsonProperty("INSIDE_BOTTOM")] public string INSIDE_BOTTOM { get; set; } [JsonProperty("BACK")] public string BACK { get; set; } } public class Print { [JsonProperty("primary")] public string primary { get; set; } [JsonProperty("secondary")] public string secondary { get; set; } } public class G1 { public Preview preview { get; set; } public Print print { get; set; } } public class Preview2 { public string FRONT { get; set; } public string BACK { get; set; } } public class Print2 { public string primary { get; set; } } public class Env { public Preview2 preview { get; set; } public Print2 print { get; set; } }}我正在从 API 读取 JSON 对象。我正在使用以下代码将其转换为BaseClass:string Jsontring= response.Content.ReadAsStringAsync().Result;var verificationResult = JsonConvert.DeserializeObject<Baseclass>(Jsontring);但 中的对象BaseClass为空。我不确定我做错了什么。你能帮忙吗?
2 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
在 JSON 中,最外层的对象中有键48ce0e9a-ee27-4e7b-93a5-4f219974f62c
和。d767e1a6-7afe-4d17-85f7-d512a0ca0b14
但是这些键不存在于Baseclass
您要反序列化到的模型类中,该模型类包含G1
和Env
属性。您可以用属性标记这些属性[JsonProperty]
,但既然您说这些键是随机的,那么处理它的更好方法是将反序列化为Dictionary<string, G1>
. Dictionary<Guid, G1>
(或者,如果您确定字母数字键始终代表 GUID,则可以使用)。
var verificationResult = JsonConvert.DeserializeObject<Dictionary<string, G1>>(Jsontring);
现在verificationResult
将包含一个字典,其中的键是来自 JSON 的随机键。每个键对应的值将是一个G1
对象,其中已填充Preview
和Print
对象。
演示小提琴在这里: https: //dotnetfiddle.net/kzGihd
- 2 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消