C# 使用LINQ和asp.net c将JSON嵌套到数据表#
我正在尝试将下面嵌套的json获取到datatable。我可以反序列化它,但无法将其获取到datatable。我尝试过wit类,但没有解析。此外,我还查找了类似的帖子或json序列,但找不到修复程序C# 使用LINQ和asp.net c将JSON嵌套到数据表#,c#,json,linq,C#,Json,Linq,我正在尝试将下面嵌套的json获取到datatable。我可以反序列化它,但无法将其获取到datatable。我尝试过wit类,但没有解析。此外,我还查找了类似的帖子或json序列,但找不到修复程序 { "firstName": "JANICE", "middleName": "F", "lastName": "MORANZ", "npi": "1295821098", "nationalProviderIdentifierType": "1", "firstApprovedDate": "20
{
"firstName": "JANICE",
"middleName": "F",
"lastName": "MORANZ",
"npi": "1295821098",
"nationalProviderIdentifierType": "1",
"firstApprovedDate": "2012-03-19T04:00:00.000Z",
"yearsInMedicare": 5,
"pecosEnrollmentDate": 2012,
"newlyEnrolled": false,
"organizations": [
{
"prvdrOrgName": "SOUTHWEST INTEGRATIVE HEALTH CENTER, LLC",
"addressLineOne": "SOUTHWEST INTEGRATIVE HEALTH CENTER LLC",
"addressLineTwo": "5310 HOMESTEAD RD NE BLDG 400",
"city": "ALBUQUERQUE",
"zip": "87110",
"state": "NM",
"individualScenario": {
"aggregationLevel": 2,
"mipsEligibleSwitch": true,
"lowVolumeSwitch": true,
"lowVolumeStatusReasons": [
{
"lowVolStusRsnCd": "CHRG",
"lowVolStusRsnDesc": "Clinician’s Part B expenditures"
}
]
},
"groupScenario": {
"aggregationLevel": 1,
"lowVolumeSwitch": false,
"lowVolumeStatusReasons": []
}
}
],
"specialty": {
"specialtyDescription": "Dermatology",
"categoryReference": "Physicians",
"typeDescription": "Doctor of Medicine"
}
}
这是我的密码。我已经在这里发布了方法。请让我知道我卡在哪里。所有根对象都通过,但阵列组织不通过循环
public DataTable GetDataTableFromJsonString(string json)
{
DataTable dt = new DataTable();
try
{
dt.Columns.AddRange(new DataColumn[] {
new DataColumn("firstName")
,new DataColumn("middleName")
,new DataColumn("lastName")
,new DataColumn("npi")
,new DataColumn("nationalProviderIdentifierType")
//,new DataColumn("state")
,new DataColumn("firstApprovedDate")
,new DataColumn("yearsInMedicare")
,new DataColumn("pecosEnrollmentDate")
,new DataColumn("newlyEnrolled")
,new DataColumn("organizations")
,new DataColumn("specialty")
,new DataColumn("prvdrOrgName")
,new DataColumn("addressLineOne")
,new DataColumn("addressLineTwo")
,new DataColumn("zip")
,new DataColumn("state")
,new DataColumn("individualScenario")});
var jsonLinq = JObject.Parse(json);
JToken organizations;
string firstName = string.Empty;
string middleName = string.Empty;
string lastName = string.Empty;
string npi1 = string.Empty;
string nationalProviderIdentifierType = string.Empty;
// string state = string.Empty;
string firstApprovedDate = string.Empty;
string yearsInMedicare = string.Empty;
string pecosEnrollmentDate = string.Empty;
string newlyEnrolled = string.Empty;
string organizations1 = string.Empty;
string specialty = string.Empty;
string prvdrOrgName = string.Empty;
string addressLineOne = string.Empty;
string addressLineTwo = string.Empty;
string city = string.Empty;
string zip = string.Empty;
string state = string.Empty;
string individualScenario = string.Empty;
string lowVolumeStatusReasons = string.Empty;
string lowVolumeStatusReasons1 = string.Empty;
string npi = String.Empty;
// string firstName = string.Empty;
List<JToken> results = jsonLinq.Children().ToList();
foreach (JProperty item in results)
{
item.CreateReader();
//if (item.Name == "data")
//{
organizations = item.Value;
foreach (JObject jProp in organizations.Children().ToList())
{
organizations = jProp["organizations"].ToString();
foreach (JProperty jitem in jProp["organizations"].Children().ToList())
{
if (jitem.Name == "firstName")
{
firstName = jitem.Value.ToString();
}
if (jitem.Name == "middleName")
{
middleName = jitem.Value.ToString();
}
if (jitem.Name == "lastName")
{
lastName = jitem.Value.ToString();
}
if (jitem.Name == "npi")
{
npi = jitem.Value.ToString();
}
if (jitem.Name == "nationalProviderIdentifierType")
{
nationalProviderIdentifierType = jitem.Value.ToString();
}
if (jitem.Name == "firstApprovedDate")
{
firstApprovedDate = jitem.Value.ToString();
}
if (jitem.Name == "yearsInMedicare")
{
yearsInMedicare = jitem.Value.ToString();
}
if (jitem.Name == "pecosEnrollmentDate")
{
pecosEnrollmentDate = jitem.Value.ToString();
}
if (jitem.Name == "newlyEnrolled")
{
newlyEnrolled = jitem.Value.ToString();
}
//if (jitem.Name == "organizations")
//{
// organizations = jitem.Value.ToString();
//}
if (jitem.Name == "organizations")
{
if (jitem.Value.Type == JTokenType.Array)
{
JArray items = (JArray)jitem.Value;
prvdrOrgName = items[0].SelectToken("value").ToString();
}
if (jitem.Name == "specialty")
{
specialty = jitem.Value.ToString();
}
}
}
foreach (JProperty jitem in jProp["organizations"].Children().ToList())
{
if (jitem.Name == "prvdrOrgName")
{
prvdrOrgName = jitem.Value.ToString();
}
if (jitem.Name == "addressLineOne")
{
addressLineOne = jitem.Value.ToString();
}
if (jitem.Name == "addressLineTwo")
{
addressLineTwo = jitem.Value.ToString();
}
if (jitem.Name == "city")
{
city = jitem.Value.ToString();
}
if (jitem.Name == "zip")
{
zip = jitem.Value.ToString();
}
if (jitem.Name == "state")
{
state = jitem.Value.ToString();
}
if (jitem.Name == "individualScenario")
{
individualScenario = jitem.Value.ToString();
}
if (jitem.Name == "lowVolumeStatusReasons")
{
if (jitem.Value.Type == JTokenType.Array)
{
JArray items = (JArray)jitem.Value;
lowVolumeStatusReasons = items[0].SelectToken("value").ToString();
}
}
if (jitem.Name == "lowVolumeStatusReasons")
{
if (jitem.Value.Type == JTokenType.Array)
{
JArray items = (JArray)jitem.Value;
lowVolumeStatusReasons1 = items[0].SelectToken("value").ToString();
}
}
}
}
dt.Rows.Add(firstName, middleName, lastName, npi1, nationalProviderIdentifierType, firstApprovedDate, yearsInMedicare, pecosEnrollmentDate, newlyEnrolled, organizations, prvdrOrgName, addressLineOne, addressLineTwo, city, zip, state, individualScenario);
//}
}
return dt;
}
catch (Exception ex)
{
return dt;
}
}
公共数据表GetDataTableFromJsonString(字符串json)
{
DataTable dt=新的DataTable();
尝试
{
dt.Columns.AddRange(新数据列[]){
新数据列(“名字”)
,新数据列(“中间名”)
,新数据列(“姓氏”)
,新数据列(“npi”)
,新数据列(“nationalProviderIdentifierType”)
//,新数据列(“状态”)
,新数据列(“firstApprovedDate”)
,新数据列(“医疗保险年”)
,新数据列(“pecosEnrollmentDate”)
,新数据列(“新登记”)
,新数据列(“组织”)
,新数据列(“专业”)
,新数据列(“prvdrOrgName”)
,新数据列(“addressLineOne”)
,新数据列(“地址行二”)
,新数据列(“zip”)
,新数据列(“状态”)
,新数据列(“个人场景”)};
var jsonLinq=JObject.Parse(json);
JToken组织;
string firstName=string.Empty;
string middleName=string.Empty;
string lastName=string.Empty;
字符串npi1=string.Empty;
string nationalProviderIdentifierType=string.Empty;
//字符串状态=string.Empty;
string firstApprovedDate=string.Empty;
string yearsInMedicare=string.Empty;
string pecosEnrollmentDate=string.Empty;
string newlyRegistered=string.Empty;
string organizations1=string.Empty;
string speciality=string.Empty;
string prvdrOrgName=string.Empty;
string addressLineOne=string.Empty;
string addressLineTwo=string.Empty;
string city=string.Empty;
string zip=string.Empty;
字符串状态=string.Empty;
string individualScenario=string.Empty;
string lowVolumeStatusReasons=string.Empty;
string lowVolumeStatusReasons1=string.Empty;
string npi=string.Empty;
//string firstName=string.Empty;
List results=jsonLinq.Children().ToList();
foreach(结果中的JProperty项)
{
item.CreateReader();
//如果(item.Name==“数据”)
//{
组织=项目价值;
foreach(组织中的JObject jProp.Children().ToList())
{
organizations=jProp[“organizations”].ToString();
foreach(jProp[“组织”].Children().ToList()中的JProperty jitem)
{
如果(jitem.Name==“firstName”)
{
firstName=jitem.Value.ToString();
}
如果(jitem.Name==“middleName”)
{
middleName=jitem.Value.ToString();
}
如果(jitem.Name==“lastName”)
{
lastName=jitem.Value.ToString();
}
如果(jitem.Name==“npi”)
{
npi=jitem.Value.ToString();
}
如果(jitem.Name==“nationalProviderIdentifierType”)
{
nationalProviderIdentifierType=jitem.Value.ToString();
}
如果(jitem.Name==“firstApprovedDate”)
{
firstApprovedDate=jitem.Value.ToString();
}
如果(jitem.Name==“年医保”)
{
yearsInMedicare=jitem.Value.ToString();
}
如果(jitem.Name==“pecosEnrollmentDate”)
{
pecosEnrollmentDate=jitem.Value.ToString();
}
if(jitem.Name==“newlyEnrolled”)
{
newlyEnrolled=jitem.Value.ToString();
}
//如果(jitem.Name==“组织”)
//{
//organizations=jitem.Value.ToString();
//}
如果(jitem.Name==“组织”)
{
if(jitem.Value.Type==JTokenType.Array)
{
JArray items=(JArray)jitem.Value;
prvdorgname=items[0]。选择标记(“值”).ToString();
}
如果(jitem.Name==“专业”)
{
speciality=jitem.Value.ToString();
}
}
}
foreach(jProp[“组织”].Children().ToList()中的JProperty jitem)
{
if(jitem.Name==“prvdrOrgName”)
{
prvdrOrgName=jitem.Value.ToString();
public DataTable DerializeDataTable(String jsonString)
{
var table = JsonConvert.DeserializeObject<DataTable>(jsonString);
return table;
}