将 json 响应转换为列表



我向我正在使用的 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 是众所周知的类型。

相关内容

  • 没有找到相关文章

最新更新