2016-09-30 8 views
3

나는 예를 들어, 객체의 배열로 내장되어 JSON 파일 (크기가 몇 GB에 몇 KB 다릅니다) 구문 분석 해요 :Java : json 객체 배열 내의 모든 키를 비교하는 가장 좋은 방법은 무엇입니까?

{ 
    "records": [ 
    { 
     "col1": "someValue", 
     "col2": "someValue", 
     "col3": "someValue", 
    }, 
    { 
     "col1": "someValue", 
     "col2": "someValue", 
     "col3": "someValue", 
    }, 
    { 
     "col1": "someValue", 
     "col2": "someValue", 
     "col3": "someValue", 
    } 
    ] 
} 

레코드는 테이블과 파일에서 데이터의 개별 행을 나타냅니다 항상 한 테이블에 대한 데이터 만 포함합니다.

테이블의 메타 데이터를 추출하고 아무 문제없이 구문 분석 할 수 있습니다. 나는 이것을하기 위해 JSON.simple 라이브러리를 사용하고있다.

지금 내가하려는 것은 모든 객체가 동일한 키를 가지고 있는지 확인하는 것입니다. 데이터가 테이블로 가져와 져야 할 필요가 없으므로 그 이상도 아닙니다. keySet() 메서드를 사용하여 키를 추출하여 목록에 넣을 수 있지만 한 목록을 한 번에 여러 행 (몇 백에서 수백만 개)으로 비교하는 것이 매우 좋지 않은 값 비싼 구현입니다.

json 배열의 모든 json 객체의 모든 키를 신속하게 비교할 수있는 좋은 해결책이 있습니까?

+0

필수 열 이름을 미리 알고 있습니까? – Quant

+0

아니요, 열 이름을 모르겠습니다. – m4r74

답변

1

데이터의 모든 행 (양 m)의 모든 키를 보지 않아도되므로 복잡도는 O(n * m) 이하가 될 수 없습니다.

+0

그래, 물론, 모든 객체의 모든 키를 볼 필요가 있지만 최선의 접근 방법은 무엇일까요? json 라이브러리 중 하나에서 키를 검증 할 수있는 메소드가있을 것을 기대하고 있었습니까? – m4r74

+0

또는 유효성을 검사하지는 않지만 유효성 검사에 스키마가 필요하므로 비교할 수 있습니다. – m4r74