是否需要在JSON数据中反序列化列表?

时间:2020-10-20 20:21:01

标签: c# json.net

我有以下返回的JSON,我只想提取processResults中的信息。我真的不在乎requestId

{
  "requestId": "884a118f-e599-43a7-9a0c-6ce5afbdb36b",
  "processResults": [{
    "code": "SYS_DESERIALIZATION_ERROR",
    "context": "punch.PunchId",
    "level": "ERROR",
    "message": "Could not find member 'PunchId'."
  }]
}

我创建了这两个类,然后称为DeserializeObject()。这样可以抽出数据,但是我觉得应该有一种方法可以将processRequest结果仅放入列表中,而不必创建额外的RequestResponse类。

class RequestResponse
{
    public string requestId { get; set; } 
    public List<ProcessResults> processResults { get; set; } 
}

public class ProcessResults
{
    public string Code { get; set; }
    public string Level { get; set; }
    public string Message { get; set; } 
}

然后我使用此代码尝试反序列化。它可以工作,但是有没有更好的方法将ProcessResults数据提取到列表中?

RequestResponse requestResponse = JsonConvert.DeserializeObject<RequestResponse>(response.Content);

1 个答案:

答案 0 :(得分:0)

您现在使用的方法没有内在的错误,但是如果您真的反对拥有根类,则可以使用JObject来解决它:

var jo = JObject.Parse(response.Content);
var processResults = jo["processResults"].ToObject<List<ProcessResults>>();

提琴:https://dotnetfiddle.net/hW0Qsu