如何将JSON字符串转换为数组

时间:2019-01-24 10:10:32

标签: c# json ssis json-deserialization

我有以下JSON字符串:

[
   {
      "name":"Test diagnosis",
      "code":"324324",
      "table":"EXAMPLE",
      "addedby":"EDnurse",
      "dateadded":3243243,
      "qualifier":[
         {
            "name":"Qualifier",
            "value":"Confirmed Diagnosis",
            "code":"23434434",
            "prefix":"[C] "
         },
         {
            "name":"Left/Right",
            "value":"Bilateral",
            "code":"324343",
            "suffix":" - Bilateral"
         }
      ],
      "prefix":"[C] ",
      "suffix":" - Bilateral"
   }
]

您会看到此JSON字符串中的Qualifier字段是嵌套的,并且具有2个对象。

我正在研究一个使用SSIS中的C#解析此JSON字符串的程序包。我可以使用一个限定符对象来解析字符串,但是当我添加第二个对象(左/右)并尝试将字符串转换为数组时,会收到错误消息。

没有数组(与一个Qualifier对象一起使用):

Diagnosis diagnosis = js.Deserialize<Diagnosis>(reviewConverted);

使用数组(返回错误,表明我无法将类型诊断隐式转换为类型诊断):

Diagnosis diagnosis = js.Deserialize<List<Diagnosis>>(reviewConverted);

我还使用以下Class定义我的诊断字段:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SC_8aae662509ae4bab8491323924579173
{
    class Diagnosis
    {
        public string name { get; set; }
        public string code { get; set; }
        public string table { get; set; }
        public string addedby { get; set; }
        public string dateadded { get; set; }

        public qualifier Qualifier { get; set; }

        public string prefix { get; set; }
        public string suffix { get; set; }


    }
}

这是我的预选课:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SC_8aae662509ae4bab8491323924579173
{
    class qualifier
    {
        public string name { get; set; }
        public string value { get; set; }
        public string code { get; set; }
        public string prefix { get; set; }
    }
}

2 个答案:

答案 0 :(得分:1)

您尝试过以下方法吗?

class Diagnosis
{
    public string name { get; set; }
    public string code { get; set; }
    public string table { get; set; }
    public string addedby { get; set; }
    public string dateadded { get; set; }

    public List<Qualifier> qualifier { get; set; }

    public string prefix { get; set; }
    public string suffix { get; set; }


}

答案 1 :(得分:1)

据我所知,根据您所说的,1个诊断对象可以包含多个Qualifier对象。因此,您需要执行以下操作: 首先,将您的诊断类更改为具有以下属性:

public qualifier List<Qualifier> { get; set; }

代替

public qualifier Qualifier { get; set; }

以下语句也是导致您出错的原因:

Diagnosis diagnosis = js.Deserialize<List<Diagnosis>>(reviewConverted);

您试图在“诊断”对象中存储“诊断列表”对象,这毫无疑问。