目前API响应包括两个顶级属性,这些属性对我的需要没有用。
a: {
b: {
c: [
data: whichINeed
]
}
}
如果我为此创建模型,我将有想要摆脱的不必要的根对象? 如何在 Windows 应用程序改装中执行此操作?
您需要软件包Refit.Newtonsoft.Json
上存在的NewtonsoftJsonContentSerializer
。
然后,将其添加到改装设置:
RestService.For<T>("host"),
new RefitSettings
{
ContentSerializer = new NewtonsoftJsonContentSerializer(jsonSerializerSettings)
});
可以尝试使用 nuget 包筛选 JSON 字符串Newtonsoft.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 解析。您可以直接通过HttpClient
发送 Web 请求以获取 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;
}
此致敬意。