将json响应转换为list

时间:2016-05-26 13:07:05

标签: c# json linq json.net deserialization

我向我正在使用的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; }
    }

2 个答案:

答案 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是众所周知的类型。