如何将 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);
您试图在诊断对象中存储一个诊断对象列表,这当然没有意义。
我有以下 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);
您试图在诊断对象中存储一个诊断对象列表,这当然没有意义。