将JSON字符串解析为类

时间:2017-04-19 11:41:37

标签: c# .net json parsing

我会将收到的JSON字符串解析为我的ReturnClass(ReturnClass的集合)。

我的JSON字符串:

[
    { "EmpId": 1, "Name": "Simone", "City": "Italy" },
    { "EmpId": 2, "Name": "Luca", "City": "Francia" },
    { "EmpId": 1, "Name": "Matteo", "City": "Inghilterra"},
    { "EmpId": 2, "Name": "Marco", "City": "Spagna" }
]

我的ReturnClass:

public class ReturnClass   
{
    public int EmpId { get; set; }
    public string Name { get; set; }
    public string City { get; set; }
}

这是我的代码tath不起作用。解析错误

HttpResponseMessage response = client.GetAsync(URL).Result;  // Blocking call! 
if (response.IsSuccessStatusCode)
{
    string output = JsonConvert.SerializeObject(response.Content.ReadAsStringAsync().Result);

    JsonConvert.DeserializeObject<ReturnClass>(output);             
}

1 个答案:

答案 0 :(得分:2)

使用此代码:

string output = JsonConvert.SerializeObject(response.Content.ReadAsStringAsync().Result);
JsonConvert.DeserializeObject<ReturnClass>(output);

你是:

  • 将HTTP响应作为字符串
  • 读取
  • 将该字符串序列化为JSON字符串
  • 将该JSON字符串反序列化为一个ReturnClass

除了第一步,这只是不必要的,这是完全错误的。您无需自己将内容作为字符串读取,您绝对不希望再次将JSON字符串序列化为JSON,并且您并不是在寻找一个 {{1 },但是它的集合。

您可以将代码简化为:

ReturnClass

作为额外的奖励,您不必自己进行反序列化,var dataFromJson = await client.ReadAsAsync<List<ReturnClass>>(); 可以做到这一点。