我向我正在使用的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; }
}
答案 0 :(得分:2)
你可以这样做:
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。
答案 1 :(得分:2)
要反序列化为众所周知的类型,请使用
JsonConvert.Deserialize<T>(jsonString,new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
其中T是众所周知的类型。