我已经try 了Stackoverflow上描述的一些解决方案(例如Best way to deserialize a nested list in a json - C#).

我已经试过了,但对我不起作用.也许我在什么地方弄错了.

以下是我用来执行HTTP请求的代码:

HttpClient httpClient = new HttpClient();

HttpResponseMessage response = await httpClient.PostAsync(url, someData);

response.EnsureSuccessStatusCode();

string responseString = response.Content.ReadAsStringAsync().Result;

AllChapters allChapters = JsonConvert.DeserializeObject<AllChapters>(responseString);

但是当我运行我的代码时,即使responseString中有数据,allChapters也总是为空(NULL).你们中有谁有解决这个问题的办法吗?我可能遗漏了一些东西,但我不知props 体是什么.

这是我的responseString美元的样子:

{
  "AllChapters": [
    {
      "ChapterIndex": 1,
      "ChapterParagraphs": [
        {
          "ParagraphIndex": 1,
          "Text": "SomeText"
        }
      ],
      "Title": "First Chapter"
    },
    {
      "ChapterIndex": 2,
      "ChapterParagraphs": [
        {
          "ParagraphIndex": 1,
          "Text": "SomeText"
        },
        {
          "ParagraphIndex": 2,
          "Text": "SomeText"
        }
      ],
      "Title": "Second Chapter"
    }
  ]
}

我已经创建了三个类来存储数据:

100

public class AllChapters
{
    public List<OneChapter> OneChapter { get; set; }
}

100

public class OneChapter
{
    public int ChapterIndex { get; set; }

    public List<ChapterParagraph> ChapterParagraphs { get; set; }

    public string Title { get; set; }

    public OneChapter()
    {
        ChapterIndex = 0;
        ChapterParagraphs = new List<ChapterParagraph>;
        Title = string.empty;
    }
}

100

public class ChapterParagraph
{
    public int ParagraphIndex { get; set; }

    public string Text { get; set; }

    public ParagraphScore()
    {
        ParagraphIndex = 0;
        Text = string.Empty;
    }
}

推荐答案

您的JSON响应与您的AllChapters类不匹配.在您的根类中,它由AllChapters属性组成:

JsonPropertyName个属性,由@ martum纠正,

public class AllChapters
{
    [JsonPropertyName("AllChapters")]
    public List<OneChapter> Chapters { get; set; }
}

或重命名根类:

public class ReadingMaterial
{
    public List<OneChapter> AllChapters { get; set; }
}
ReadingMaterial readingMaterial = JsonConvert.DeserializeObject<ReadingMaterial>(responseString);

Csharp相关问答推荐

使用特定格式的JsonConvert序列化对象

Blazor-从数据库内部服务器提取错误

在路由中使用枚举

如何在页面重新加载后保持菜单切换状态

在具有不同属性名称的两个类之间创建关系

如何使用NumberFormatInfo

将字节转换为 struct 并返回

在C#中反序列化/序列化具有混合元素顺序的XML时出现问题

CA1508:';NULL=>;TRUE;始终为';TRUE';.移除或重构条件(S)以避免死代码

对于PowerShell中的ConvertTo-SecureString方法,Microsoft如何将初始化向量添加到AES加密中的安全字符串?

我可以查看我们向应用程序洞察发送了多少数据吗?

为什么此名称不再被识别?名称不存在于当前上下文中?

如何在.NET MAUI中最大化GraphicsView的大小?

如何在ASP.NET Core 8中获取键控服务词典

删除MudRadio时,MudRadioGroup未 Select 正确的MudRadio

并发表更新.EF核心交易

将文本从剪贴板粘贴到RichTextBox时,新文本不会在RichTextBox ForeColor中着色

我想我必须手动使用res1(字符串形式的PowerShell哈希表)

如何获取我在SQL中输入的值

使用';UnityEngineering.Random.Range()';的IF语句仅适用于极高的最大值