JSON에 중첩 된 데이터를 가져 오려고합니다.이 데이터 extendedData.e_ETP["value"]
는 extendedData.e_ETP [ "value"] 값을 가진 LUS_BU 키가있는 목록을 생성하도록 API에 요청하여 얻습니다.
하지만 값에 액세스하려고 할 때 오류가 발생합니다. Newtonsoft.Json.Linq.JValue에서 자식 값에 액세스 할 수 없습니다.
uri에서`extendedData.e_ETP가 null이 아닌 항목의 ID를 지정하면 작동합니다.
문제는 null 인 경우 LUS_BU에 대한 기본값을 입력하거나 하나가있는 경우 extendedData.e_ETP의 값을 사용하고 싶습니다.
다음은 C # 코드의 일부입니다.
myUri = new Uri("https://ilucca.net/api/v3/users?dtContractStart=since,1900-01-01&dtContractEnd=until,2100-01-01,null&fields=id,firstName,lastName,employeeNumber,personalAccount,userAxisValues,legalEntityID,mail,dtContractEnd,dtContractStart,manager[name],birthDate,seniorityDate,gender,extendedData.e_ETP,extendedData.e_contracttype");
request = (HttpWebRequest)WebRequest.Create(myUri);
request.Headers["Authorization"] = "ApiKey";
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
s = reader.ReadToEnd();
reader.Close();
response.Close();
rep = JObject.Parse(s);
salaries = rep["data"]["items"].Where(c => (string)c["name"] != "lad" && (int?)c["legalEntityID"] != 10).Select(c => new T_E_LuccaSalarie_LUS()
{
LUS_ETP = (c["extendedData"]["e_ETP"] != null ) ? (string)c["extendedData"]["e_ETP"]["value"] : "1"
}).ToList();
}
catch (WebException ex)
{
string exMessage = ex.Message;
if (ex.Response != null)
{
using (StreamReader responseReader = new StreamReader(ex.Response.GetResponseStream()))
{
exMessage = responseReader.ReadToEnd();
Console.WriteLine(exMessage);
}
}
}
JSON :
{
"header": {
"generated": "2021-01-22T16:12:53.4193558",
"serverTime": 1395,
"queryTime": 169,
"queryCount": 18,
"principal": "API Integration",
"processId": 6956
},
"data": {
"items": [
{
"id": 6,
"firstName": "John",
"lastName": "Doe",
"employeeNumber": "2",
"personalAccount": "Z0",
"userAxisValues_1": {
"id": 10,
"name": "FT04 SALES",
"url": "https://ilucca.net/api/v3/axissections/48"
},
"legalEntityID": 1,
"mail": "[email protected]",
"dtContractEnd": "2020-01-30T00:00:00",
"dtContractStart": "2000-06-18T00:00:00",
"manager": {
"name": "John Doe"
},
"birthDate": "1959-08-23T00:00:00",
"seniorityDate": "2010-06-18T00:00:00",
"gender": "Female",
"extendedData": {
"e_ETP": null,
"e_contracttype": {
"id": 9556,
"value": 16
}
}
}
]
},
"metadata": null
}
특정 세부 사항이나 특정 요점에 대한 설명이 필요한지 자유롭게 물어보십시오.
주석에서 논의했듯이 if e_ETP
is null이면 "e_ETP": null
Json 과 같이 제공됩니다 . 이 시나리오는 토큰이 JValue
값이 null 인 유형임을 나타냅니다 . 긍정적 인 시나리오에서 e_ETP
유형은JObject
아래 코드를 사용하여 유형의 유효성을 검사하고 값을 할당 할 수 있습니다. LUS_ETP
LUS_ETP = jObj["data"]["items"][0]["extendedData"]["e_ETP"].GetType() == typeof(JObject)
? jObj["data"]["items"][0]["extendedData"]["e_ETP"]["value"].Value<string>()
: "1";
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다