如何在反序列化之前从 json 字符串中删除元素?

How to remove an element from json string before deserialize it?

假设 return 类型是

    public ActionResult Balance()
    {
        var myDtos = new List<BalanceModelDto>();
        return Ok(new {data = myDtos});
    }

在我的 xunit 中,我断言 return 类型。

        using (var client = new HttpClient())
        {                          
            var response = await client.GetAsync($"/Balance");
            var responseString = await response.Content.ReadAsStringAsync();

            var result = JsonConvert.DeserializeObject<BalanceModelDto>(responseString);

            Assert.IsType<BalanceModelDto>(result);

            Assert.Equal(1, result.Balance);
        }

问题是 responseString"{\"data\":[{"balance\":1}]}"。但我想要的只是 "[{"balance\":1}]"

两者之一:您应该查看 result.data 而不仅仅是 result。 或:return Ok(myDtos); 来自 ActionMethod。

反序列化为JObject:

var responseRaw = (JObject) JsonConvert.DeserializeObject(responseString);

然后将 json 对象的“数据”属性 转换为 BalanceModelDto[]:

var result = responseRaw["data"].ToObject<BalanceModelDto[]>();