亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法讀取 C# 中的 Json 對象

無法讀取 C# 中的 Json 對象

C#
躍然一笑 2023-08-13 16:27:10
我正在嘗試解析一個 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您要反序列化到的模型類中,該模型類包含G1Env屬性。您可以用屬性標記這些屬性[JsonProperty],但既然您說這些鍵是隨機的,那么處理它的更好方法是將反序列化為Dictionary<string, G1>Dictionary<Guid, G1>(或者,如果您確定字母數字鍵始終代表 GUID,則可以使用)。

var verificationResult = JsonConvert.DeserializeObject<Dictionary<string, G1>>(Jsontring);

現在verificationResult將包含一個字典,其中的鍵是來自 JSON 的隨機鍵。每個鍵對應的值將是一個G1對象,其中已填充PreviewPrint對象。

演示小提琴在這里: https: //dotnetfiddle.net/kzGihd


查看完整回答
反對 回復 2023-08-13
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

您是否嘗試在異步函數之前添加await?

等待響應.Content.ReadAsStringAsync()


查看完整回答
反對 回復 2023-08-13
  • 2 回答
  • 0 關注
  • 181 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號