无法读取 C# 中的 Json 对象

我正在尝试解析一个 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为空。


我不确定我做错了什么。你能帮忙吗?


跃然一笑
浏览 75回答 2
2回答

ABOUTYOU

在 JSON 中,最外层的对象中有键48ce0e9a-ee27-4e7b-93a5-4f219974f62c和。d767e1a6-7afe-4d17-85f7-d512a0ca0b14但是这些键不存在于Baseclass您要反序列化到的模型类中,该模型类包含G1和Env属性。您可以用属性标记这些属性[JsonProperty],但既然您说这些键是随机的,那么处理它的更好方法是将反序列化为Dictionary<string, G1>.&nbsp;Dictionary<Guid, G1>(或者,如果您确定字母数字键始终代表 GUID,则可以使用)。var&nbsp;verificationResult&nbsp;=&nbsp;JsonConvert.DeserializeObject<Dictionary<string,&nbsp;G1>>(Jsontring);现在verificationResult将包含一个字典,其中的键是来自 JSON 的随机键。每个键对应的值将是一个G1对象,其中已填充Preview和Print对象。演示小提琴在这里: https:&nbsp;//dotnetfiddle.net/kzGihd

凤凰求蛊

您是否尝试在异步函数之前添加await?等待响应.Content.ReadAsStringAsync()
打开App,查看更多内容
随时随地看视频慕课网APP