2017-12-11 2 views
0

API 자동화를 처음 사용합니다. 다음은 JSON 구조입니다. 모든 3 개의 배열에서 "LunId"를 추출하고 싶습니다. 경로는 코드에서 언급됩니다.중첩 된 JSON 경로에서 데이터를 추출 할 수 없습니다.

JSON structure1
JSON expanded structure1

Error1 :

When using "$" in the code

있고 Error2 :

When not using "$" in the code

@Test 

public void getAllLuns(){ 

Response resp = given().header("Authorization", "Bearer "+"ddnsdndnn22x"); 
       when(). 
       get("http://10.100.242.11/api/v1/luns"); 

String Name = resp.     
       then(). 
       contentType(ContentType.JSON). 
       extract(). 
       path("$..LunId").toString(); 

System.out.println("Lun Name is--->"+LunId); 

JSON 경로 추출기 온라인에서 올바른 데이터를 추출하지만 Eclipse에서 실행하는 동안 오류가 발생합니다. 문제가 경로에 있습니다. 이러한 종류의 경로로 작업하는 방법을 도와주세요. 경로 1에서 "$"를 사용하고 사용하지 않을 때 Error2를 사용할 때 오류 1이 발생합니다.

+0

감사를하는 데 도움이

https://github.com/json-path/JsonPath

public List<String> getLunIDNames() { return lunIDNamess = JsonPath.read("ValidJSON", "$..LunId[*].Name"); } 

희망 JSONPath lib 디렉토리를 사용하여 수행 할 수 있습니다 @ 피터 하다드 –

+0

LunId이 배열에서 액세스 할 수 있기 때문에 발생되는 오류입니다 . 대신 JSON Array를 저장하고 반복하여 LundId의 값을 가져옵니다. – Sree

+0

스택 오버플로에 오신 것을 환영합니다! [코드 스크린 샷이 좋지 않은 이유] (https://meta.stackoverflow.com/questions/303812/discourage-screenshots-of-code-and-or-errors)를 읽어보십시오. 코드를 붙여넣고 올바르게 형식을 지정하십시오. – JeffC

답변

0

이 쉽게이 편집에 대한

+0

코드에서 사용하는 방법을 알지 못했습니다. 좀 도와주세요 –

+0

"ValidJSON"다음에 유효한 JSONPath가 표시된 문자열로 응답을 구문 분석해야합니다. Alternativel이 pastie.io에서 JSON 응답을 보내십시오. – Zach

+0

감사합니다. 해야 할 일 전체 JSON 응답을 목록으로 가져와야하는 경우 해당 목록의 0 번째 위치에서 사전을 가져온 다음 사전에서 특정 요소를 추출하십시오. 예 : JSON 응답에 {0} 및 {1}이 (가)있는 경우 두 요소 모두 "이름"과 같은 요소가 있습니다. {0} .Name을 얻는 방법 –

관련 문제