1

目前,API 响应包括两个对我的需要没有用的顶级属性。

a: {
   b: {
      c: [
           data: whichINeed
         ]
      }
   }

如果我为此创建模型,我将拥有我想要摆脱的不必要的根对象?如何在 Refit for Windows App 中执行此操作?

4

2 回答 2

1

Newtonsoft.JSON您可以尝试使用nuget 包过滤 JSON 字符串。

您提供的 JSON 不完整。我假设这个JSON字符串是一个Object,最外层是{},那么我们可以这样解析它

var obj = JObject.Parse(jsonString);
var c = obj["a"]["b"]["c"];
var myTransferModel = JsonConvert.DeserializeObject<MyModel>(c.ToString());

如果最外层是[],请JArray用于解析。


更新

Refit封装网络请求和JSON解析。您可以通过直接发送 Web 请求HttpClient来获取 JSON 字符串。

public async Task<string> GetJsonString(string url)
{
    string result = string.Empty;
    var client = new HttpClient();
    var response = client.GetAsync(url);
    if(response.IsSuccessStatusCode)
    {
        result = await response.Content.ReadAsStringAsync();
    }
    return result;
}

此致。

于 2019-11-25T09:20:12.520 回答
1
RestService.For<T>("host"),
            new RefitSettings
            {
                ContentSerializer = new NewtonsoftJsonContentSerializer(jsonSerializerSettings)
            });
于 2020-11-06T08:20:39.600 回答