我向我正在使用的 api 发出请求,这是我得到的响应。
{ "id": 1139, "performanceStatus": "OK", "availabilityStatus": "OK" }
我想在列表中转换此响应,然后我可以在其中使用 for/foreach 循环,稍后可以使用 linq 和 SelectMany 创建一个全新的列表。
我走到了这一步,但我被困住了代码没有命中var"newJson"。
有人可以帮助我吗?
var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
dynamic parsedJson = JObject.Parse(json);
foreach (var j in parsedJson)
{
j.Replace(JObject.FromObject(
new {
id = j.id,
performance = j.performanceStatus,
availability = j.availabilityStatus
}));
}
var newJson = parsedJson.ToString();
稍后我想将其反序列化为强类型类。这样
boi = await Task.Run(() => JsonConvert.DeserializeObject<Boi>(newJson)).ConfigureAwait(false);
这是强类型类
public class Boi
{
public int Id { get; set; }
public string PerformanceStatus { get; set; }
public string AvailabilityStatus { get; set; }
}
public class NewBoi
{
public List<Boi> eeg { get; set; }
}
你可以
这样做:
var jsn = "{ "id": 1139, "performanceStatus": "OK", "availabilityStatus": "OK" }";
var bois = new List<Boi> { JsonConvert.DeserializeObject<Boi>(jsn) };
var newBoi = new NewBoi() { eeg = bois };
虽然我会质疑 NewBoi 类的必要性 - 你可以只使用 List。
要反序列化为已知类型,请使用
JsonConvert.Deserialize<T>(jsonString,new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
其中 T 是众所周知的类型。