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

How to convert JSON string to an array

我有以下 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 字符串的包。我可以用限定符的一个对象解析字符串,但是当我添加第二个对象 (left/right) 并尝试将字符串转换为数组时,我收到一个错误。

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

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

使用数组(returns 错误说明我无法将类型诊断隐式转换为类型诊断):

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; }


    }
}

这是我的预选赛 class:

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; }
    }
}

你有没有像下面这样尝试过?

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 个诊断对象可以包含多个限定符对象。所以你需要做的是: 首先,将您的诊断 class 更改为以下内容 属性:

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

而不是

public qualifier Qualifier { get; set; }

此外,以下语句也会给您带来错误:

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

您试图在诊断对象中存储一个诊断对象列表,这当然没有意义。