2017-01-04 4 views
0

JAVA에서 Jayway JsonPath 2.2 버전을 사용하고 있습니다. 같은 질문에 대해 몇 가지 질문이 있습니다.JsonPath 필터 후 문자열 가져 오기

샘플 JSON :

{ "l5": [ { "type": "type1", "result": [ "res1" ] }, { "type": "type2", "result": [ "r1" ] } ] }

  1. 내가 필터 후 문자열을 가져 오려는이 적용?

    예 : type2 (문자열), 그러나 점점 [ "타입 2"] (배열) 내가 무엇을하고 있는가하면

    경로를 수정하십시오 : 문자열을 가져 오는 데 사용

    경로 l5[?(@.type == 'type2')].type 예상 결과입니다 문자열로 가져 오는 것이 잘못 되었습니까?

  2. 필터를 적용한 후에 결과 배열을 인덱싱 할 수 없습니다. 어떻게하면 같은 결과를 얻을 수 있습니까?

    예 :

    내가 l5[?(@.type == 'type2')][0], 대신 나에게이 jsonPath를 사용하여 문자열에서 부분 문자열을 추출하는 것이 가능

  3. []를 반환하는 첫 번째 JSONObject를 반환 경로를 사용하는 경우?

    뭔가

l5[0].type[0,2] => res 같은 주 : 나는 도서관 제네릭을 유지하기 위해 원하는대로 내가, JAVA에서 모든 작업을 수행 할 수 없습니다?

답변

0

jsonPath의 반환 값은 항상 here에서 인용 된 배열입니다.

따라서 작업 1은 불가능합니다. 즉 문자열 값이 반환되지 않습니다.
작업 2와 작업 3조차도 jayway jsonpath로는 적합하지 않습니다.

굿 읽음 jayway Jsonpath. 운영 1과 2에 대한

유일한 방법은 다음과 같은 : - 우리가 ALWAYS_RETURN_LIST의 구성을 설정하는 경우에만

String jsonpath="l5[?(@.type == 'type2')].type"; 
     DocumentContext jsonContext = JsonPath.parse(jsonString); 
     List<String> typeDataList= jsonContext.read(jsonpath); 
     System.out.println(typeDataList.get(0)); //type2 
+0

를,이 배열을 반환합니다. 그렇지 않으면 리턴 데이터에 따라 값을 3 스트합니다. 예 : 'l5 [0] .type' 경로를 지정하면 적절한 문자열 ** type1 **이 생성됩니다. 그러나 필터의 경우에만, 나는 얻지 못한다. 또한 나는 같은 자바 코드를 추가 할 수 없다. –