我想解析下面的字符串,下面是我的代码,下面是我的字符串
string jsn = Convert.ToString(
@"{
'TaxProfile':{'id':258658,'IncomeTypeStatus':[{'IncomeType':'0001','StatusCodeDesc':'Ready For SAP','StatusCode':'RFS','PayFromCountryCode':'IE'}],'ExpirationDate':null,'FormName':null},
'ErrorJSON':'[{\'TypeID\':\'Z_FI_MDG\',\'SeverityCode\':\'3\',\'Note\':\'\\\'An Electronic Fund Transactions (EFT) routing number is comprised of a three-digit financial institution number and a five-digit branch number, preceded by a \\\\\\\'leading zero\\\\\\\'. \\\\\\\\r\\\\\\\\n•YYY: Institution\'}]'
}"
);
JObject jo = JObject.Parse(jsn);
// dynamic jo = JObject.Parse(jsn);
TenantPayeeMessage apTenantMessage = null;
// JObject jo = o;
// var auditObject = jo.ToString();
JToken PartnerReferenceId;
string Payeeid, PayeeStatus, bpid = string.Empty;
JToken[] items = null;
JToken sectionStatus = null;
JToken TaxIncomType = null;
JToken[] bank = null;
var bankJson = new Dictionary<string, string>();
JToken ErrorJSONSeverityNote,
ErrorJSONSeverityCode,
ErrorJSONTypID,
BasicErrorJSON,
Basicbpid,
Basicstatus,
BasicId, CompliancebpErrorJSON,
Compliancebpid, Compliancestatus, ComplianceId, ErrorJSONpp,
bbpidpp, statuspp,
PaymentProfileId, FormName,
ExpirationDate,
PayFromCountryCode, StatusCode, StatusCodeDesc, IncomeType, TaxProfileId;
//Guid SyncIdentifier = Guid.Parse(jo["BusinessPartnerSUITEBulkReplicateConfirmation"]["BusinessPartnerSUITEReplicateConfirmationMessage"]["MessageHeader"]["UUID"].Value<string>());
if (null != jo["TaxProfile"]["id"] && null != jo["TaxProfile"]["id"])
{
TaxProfileId = jo["TaxProfile"]["id"].Value<string>();
}
TaxIncomType = jo["TaxProfile"]["id"]["IncomeTypeStatus"].Value<string>();
在最后一行我得到错误 无法访问Newtonsoft.Json.Linq.JValue上的子值。 我不知道我错在哪里我想解析字符串
答案 0 :(得分:2)
您的代码看起来像(我删除了与异常和格式化JSON字符串无关的代码):
var jsn = Convert.ToString(
@"{
'TaxProfile': {
'id': 258658,
'IncomeTypeStatus': [
{
'IncomeType': '0001',
'StatusCodeDesc': 'Ready For SAP',
'StatusCode': 'RFS',
'PayFromCountryCode': 'IE'
}
],
'ExpirationDate': null,
'FormName': null
},
'ErrorJSON': '[{\'TypeID\':\'Z_FI_MDG\',\'SeverityCode\':\'3\',\'Note\':\'\\\'An Electronic Fund Transactions (EFT) routing number is comprised of a three-digit financial institution number and a five-digit branch number, preceded by a \\\\\\\'leading zero\\\\\\\'. \\\\\\\\r\\\\\\\\n•YYY: Institution\'}]'
}");
var jo = JObject.Parse(jsn);
var TaxIncomType = jo["TaxProfile"]["id"]["IncomeTypeStatus"].Value<string>();
代码
jo["TaxProfile"]["id"]
返回258658.因此,如果您尝试获取它的IncomeTypeStatus
属性,您将获得上述异常。可能你需要从你的调用链中删除id。
jo["TaxProfile"]["IncomeTypeStatus"]