하위 노드 값 JSON에 액세스 할 수 없습니다.

잠 못 이루는

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
}

특정 세부 사항이나 특정 요점에 대한 설명이 필요한지 자유롭게 물어보십시오.

사용자 1672994

주석에서 논의했듯이 if e_ETPis null이면 "e_ETP": nullJson 과 같이 제공됩니다 . 이 시나리오는 토큰이 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++ : 노드 값에 액세스 할 수 없습니다.

분류에서Dev

Firebase 규칙-각 노드에 액세스 할 수 없습니다.

분류에서Dev

Firebase 규칙-각 노드에 액세스 할 수 없습니다.

분류에서Dev

XML 노드의 @attributes에 액세스 할 수 없습니다.

분류에서Dev

하위 클래스의 상위 클래스 변수 값에 액세스 할 수 없습니다.

분류에서Dev

부모 범위에서 필요한 노드 js에 액세스 할 수 없습니다.

분류에서Dev

foreach에서 json 위치에 액세스 할 수 없습니다.

분류에서Dev

세션 PHP의 값에 액세스 할 수 없습니다.

분류에서Dev

JSON의 특정 필드에 액세스 할 수 없습니다.

분류에서Dev

스레드가 죽은 우선 순위에 액세스 할 수 없습니다.

분류에서Dev

연결 목록의 인접 노드에 액세스 할 수 없습니다.

분류에서Dev

중첩 된 formGroup의 값에 액세스 할 수 없습니다.

분류에서Dev

div 값에 액세스 할 수 없습니다.

분류에서Dev

Reducer 및 상태 값에 액세스 할 수 없습니다.

분류에서Dev

ValueChangeListener 외부의 UIComponent 값에 액세스 할 수 없습니다.

분류에서Dev

dict 값에 액세스 할 수 없습니다 indjango보기

분류에서Dev

문자열 값에 액세스 할 수 없습니다.

분류에서Dev

JS 개체의 값에 액세스 할 수 없습니다.

분류에서Dev

$ modalInstance의 양식 값에 액세스 할 수 없습니다.

분류에서Dev

배열의 모든 값에 액세스 할 수 없습니다.

분류에서Dev

@ Html.DropDownList 값에 액세스 할 수 없습니다.

분류에서Dev

Cloud Functions로 Datasnapshot 값에 액세스 할 수 없습니다.

분류에서Dev

angularjs 및 json wordpress API를 사용하면 app.factory $ resource의 currentPage 값에 액세스 할 수 없습니다.

분류에서Dev

새 4TB 하드 드라이브에 액세스 할 수 없습니다.

분류에서Dev

특정 클래스 인스턴스에서 메서드를 호출하는 HTML 버튼은 인스턴스 값에 액세스 할 수 없습니다.

분류에서Dev

Marker 클래스의 getPosition () 메서드를 사용하여 마커 위치에 액세스 할 수 없습니다.

분류에서Dev

하위 도메인에서 Magento 세션에 액세스 할 수 없습니다.

분류에서Dev

Laravel의 JSON 응답 객체 값에 액세스 할 수 없습니다.

분류에서Dev

AngularJS를 사용하여 양식 필드에 액세스 할 수 없습니다.

Related 관련 기사

  1. 1

    C ++ : 노드 값에 액세스 할 수 없습니다.

  2. 2

    Firebase 규칙-각 노드에 액세스 할 수 없습니다.

  3. 3

    Firebase 규칙-각 노드에 액세스 할 수 없습니다.

  4. 4

    XML 노드의 @attributes에 액세스 할 수 없습니다.

  5. 5

    하위 클래스의 상위 클래스 변수 값에 액세스 할 수 없습니다.

  6. 6

    부모 범위에서 필요한 노드 js에 액세스 할 수 없습니다.

  7. 7

    foreach에서 json 위치에 액세스 할 수 없습니다.

  8. 8

    세션 PHP의 값에 액세스 할 수 없습니다.

  9. 9

    JSON의 특정 필드에 액세스 할 수 없습니다.

  10. 10

    스레드가 죽은 우선 순위에 액세스 할 수 없습니다.

  11. 11

    연결 목록의 인접 노드에 액세스 할 수 없습니다.

  12. 12

    중첩 된 formGroup의 값에 액세스 할 수 없습니다.

  13. 13

    div 값에 액세스 할 수 없습니다.

  14. 14

    Reducer 및 상태 값에 액세스 할 수 없습니다.

  15. 15

    ValueChangeListener 외부의 UIComponent 값에 액세스 할 수 없습니다.

  16. 16

    dict 값에 액세스 할 수 없습니다 indjango보기

  17. 17

    문자열 값에 액세스 할 수 없습니다.

  18. 18

    JS 개체의 값에 액세스 할 수 없습니다.

  19. 19

    $ modalInstance의 양식 값에 액세스 할 수 없습니다.

  20. 20

    배열의 모든 값에 액세스 할 수 없습니다.

  21. 21

    @ Html.DropDownList 값에 액세스 할 수 없습니다.

  22. 22

    Cloud Functions로 Datasnapshot 값에 액세스 할 수 없습니다.

  23. 23

    angularjs 및 json wordpress API를 사용하면 app.factory $ resource의 currentPage 값에 액세스 할 수 없습니다.

  24. 24

    새 4TB 하드 드라이브에 액세스 할 수 없습니다.

  25. 25

    특정 클래스 인스턴스에서 메서드를 호출하는 HTML 버튼은 인스턴스 값에 액세스 할 수 없습니다.

  26. 26

    Marker 클래스의 getPosition () 메서드를 사용하여 마커 위치에 액세스 할 수 없습니다.

  27. 27

    하위 도메인에서 Magento 세션에 액세스 할 수 없습니다.

  28. 28

    Laravel의 JSON 응답 객체 값에 액세스 할 수 없습니다.

  29. 29

    AngularJS를 사용하여 양식 필드에 액세스 할 수 없습니다.

뜨겁다태그

보관