如何解析/反序列化从C#中的REST服务返回的JSON

埃桑·贾杰德(Ehsan Sajjad)

我从结构类似的URL获取字符串格式的JSON,但无法解析它。它引发了异常,您知道如何解析它吗?

结构如下:

{
   "pathway":{
      "patients":{
         "patient":[
            {
               "patientid":"7703176",
               "name":"Abbot, Bud",
               "status":"Invited",
               "start":"2013-12-07",
               "last":"N/A",
               "engagement":"N/A",
               "drug":"N/A",
               "adherence":"N/A",
               "vitals":"Current",
               "last_appointment":"2013-10-25",
               "next_appointment":"None"
            },
            {
               "patientid":"5089554",
               "name":"Brennan, Bonnie",
               "status":"Connected",
               "start":"2013-12-29",
               "last":"2014-02-01",
               "engagement":"Low",
               "drug":" ",
               "adherence":" ",
               "vitals":"Out of Date",
               "last_appointment":"2013-04-21",
               "next_appointment":"None"
            }
         ]
      }
   }
}

我这样做是这样的:

public class PathWayWrapper
{
    public pathway pathway { get; set; }
}

public class pathway
{
    public List<patient> patients { get; set; }
}

public class patient
{
    public long patientid { get; set; }
    public string name { get; set; }
    public string status { get; set; }
    public string start { get; set; }
    public string last { get; set; }
    public string engagement { get; set; }
    public string drug { get; set; }
    public string adherence { get; set; }
    public string vitals { get; set; }
    public string last_appointment { get; set; }
    public string next_appointment { get; set; }
}

这是我的解析代码:

StreamReader reader = new StreamReader(response.GetResponseStream());

string json = reader.ReadToEnd();

var Jsonobject = JsonConvert.DeserializeObject<PathWayWrapper>(json);

objPathway = Jsonobject.pathway;
克雷格(Craig W.)

您要反序列化的类是不正确的。您缺少“患者”类。

当我有JSON并尝试反序列化时,我喜欢使用http://json2csharp.com在反序列化类中生成第一个剪切。比尝试手动操作更准确。

var jsonobject = JsonConvert.DeserializeObject<RootObject>(json);

public class Patient
{
    public string patientid { get; set; }
    public string name { get; set; }
    public string status { get; set; }
    public string start { get; set; }
    public string last { get; set; }
    public string engagement { get; set; }
    public string drug { get; set; }
    public string adherence { get; set; }
    public string vitals { get; set; }
    public string last_appointment { get; set; }
    public string next_appointment { get; set; }
}

public class Patients
{
    public List<Patient> patient { get; set; }
}

public class Pathway
{
    public Patients patients { get; set; }
}

public class RootObject
{
    public Pathway pathway { get; set; }
}

PS:您得到的异常通常是一个很好的线索,说明您定义反序列化类的方式有问题。

无法反序列化当前JSON对象(例如{“ name”:“ value”})为类型'System.Collections.Generic.List`1 [ConsoleApplication1.Program + Patient]',因为该类型需要JSON数组(例如[1, 2,3])正确反序列化。

要解决此错误,可以将JSON更改为JSON数组(例如[1,2,3]),也可以更改反序列化类型,使其成为普通的.NET类型(例如,不像整数这样的原始类型,也不像这样的集合类型)数组或列表),可以从JSON对象反序列化。还可以将JsonObjectAttribute添加到类型中,以强制其从JSON对象反序列化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何解析/反序列化动态JSON

来自分类Dev

如何解析/反序列化动态JSON

来自分类Dev

如何解析/反序列化从C#中的REST服务返回的JSON

来自分类Dev

反序列化JSON C#

来自分类Dev

在C#中反序列化嵌套数组JSON返回空值

来自分类Dev

在C#中反序列化JSON:对象与数组

来自分类Dev

在C#中反序列化json Java对象

来自分类Dev

在C#中反序列化复杂的JSON数据

来自分类Dev

在REST服务中反序列化JSON

来自分类Dev

在C#中反序列化嵌套的JSON数组

来自分类Dev

如何从C#中的json反序列化/解析的字符串中获取值和键?

来自分类Dev

当返回数据集未知时,在C#中反序列化JSON

来自分类Dev

C#:反序列化JSON

来自分类Dev

C#如何使反序列化的JSON导入公开?

来自分类Dev

JSON响应未在C#中反序列化?

来自分类Dev

如何解决反序列化rest服务返回的xml中的问题?

来自分类Dev

Json在C#中反序列化

来自分类Dev

在C#中反序列化JSON:对象与数组

来自分类Dev

在C#中反序列化JSON数组

来自分类Dev

如何使用C#反序列化JSON数据?

来自分类Dev

C#反序列化嵌套的Json返回null

来自分类Dev

在C#中,如何反序列化从REST服务获得的结果?

来自分类Dev

C#在JSON中反序列化JSON

来自分类Dev

反序列化JSON返回null C#

来自分类Dev

如何通过C#反序列化JSON文件

来自分类Dev

如何在C#中反序列化JSON

来自分类Dev

在C#中反序列化JSON对象

来自分类Dev

在 C# 中反序列化 JSON 值数组

来自分类Dev

无法在 C# 中反序列化 JSON 响应