2017-01-07 5 views
1

RESTful 서비스에서 JSON 데이터를 구문 분석하려고합니다.Java 객체를 사용하지 않고 JSON 구문 분석

서비스 소비자가 WSDL에서 스텁과 스켈레톤을 만들 수있는 SOAP 기반 서비스와 달리 서비스 소비자는 RESTful 서비스의 경우 원시 JSON 문자열을 가져옵니다.

서비스 소비자는 자바 객체가 JSON 구조를 일치하지 않기 때문에

, 우리는, GSON 같은 자바 매퍼에 JSON을 사용할 수 없습니다 잭슨 등

또 다른 방법은 JsonPath처럼 파서를 사용하는 것입니다

하나, JSON 구조를 가로 지르고 데이터를 읽는 데 도움이되는 minimal-json 등이 있습니다.

JSON 데이터를 읽는 더 좋은 방법이 있습니까?

+0

사용자 지정 매핑을 만드는 것이 얼마나 어렵고 정당합니까? Gson과 Jackson은 DTO 매핑이 작동하지 않아도되고, 대신 JSON을 java.util.Map 인스턴스로 매핑 할 수 있습니다. –

답변

3

Jackson의 official docs에는 Java에서 JSON 문서를 구문 분석하는 3 가지 방법이 나와 있습니다. 처음 2 개에는 "JSON 구조와 일치하는 Java 객체"가 필요하지 않습니다.. 요약 :

  • 스트리밍 API (일명 "증분 분석/생성") 읽기 및 개별 이벤트로 JSON 컨텐츠를 씁니다.
  • 트리 모델은 JSON 문서의 변경 가능한 메모리 내 트리 표현을 제공합니다. ObjectMapper는 JsonNode 노드로 구성된 트리를 작성할 수 있습니다.
  • 데이터 바인딩은 속성 접근 자 규칙 또는 주석을 기반으로 JSON과 POJO를 변환합니다. 간단한 데이터는 당신이 자바지도, 목록, 문자열, 숫자, 부울 및 널 (null) 전체 데이터 당신이 (에 어떤 자바 빈 형식으로 변환 바인딩으로
  • 변환 바인딩뿐만 아니라와
    1. "간단한"유형의 또 다른 옵션은 JSON 문서에서 자바 콩을 생성하는 것입니다

) 위에서 언급 한. 마일리지가 다를 수 있으며 생성 된 파일을 수정해야 할 수도 있습니다. 당신이 시도 할 수있는 목적을 위해 적어도 5 온라인 도구가 있습니다

또한 IDE 플러그인이있다 그 당신이 사용할 수있는. 예를 들어,이 제품은 Intellij에 해당합니다. https://plugins.jetbrains.com/idea/plugin/7678-jackson-generator-plugin

0

GSON은 객체가없는 작업도 지원합니다. 이 같은 뭔가 :

JsonObject propertiesWrapper = new JsonParser().parse(responseContent).getAsJsonObject(); 
    assertNotNull(propertiesWrapper); 
    propertiesWrapper = propertiesWrapper.getAsJsonObject("properties"); 
    assertNotNull(propertiesWrapper); 
    JsonArray propertiesArray = propertiesWrapper.getAsJsonArray("property"); 
    assertNotNull(propertiesArray); 
    assertTrue(propertiesArray.size()>0, "The list of properties should not be empty. "); 

문제는이 방법 대신 개체를 만드는 데 정말 더 너무 불편 작품이다.

잭슨은 절대적으로 똑같은 문제를 가지고 있으며, 직접적인 json 읽기/생성에 극도로 불편합니다. 모든 튜토리얼 어드바이스는 대신 POJO를 사용합니다.

정말 편리한 방법은 Groovy를 사용하는 것뿐입니다. Groovy는 Java에서 엔벨로프로 작동하므로 Java 코드를 작성하고 필요에 따라 Groovy 연산자를 사용할 수 있습니다. JSON 또는 XML 읽기 및 작성에서 Groovy는 모든 라이브러리가 서로 곱해진 Java와 비교할 수 없을 정도로 강력합니다. 이미 준비된 POJO의 다른 트리 구조로 이미 준비된 것보다 훨씬 더 편리합니다.

관련 문제