거대한 json 파일 (200MB)을 구문 분석하는 데 문제가 있습니다. 처음에는 jsonson을 사용하여 json을 트리로 구문 분석했습니다. 그러나, 나는 힙 크기 문제가 발생했습니다. 어떤 이유로 힙 크기를 늘리는 것은 선택 사항이 아닙니다.힙 크기를 늘리지 않고 거대한 json 파일을 구문 분석
JSON 형식 :
{
"a1":{ "b1":{"c1":"somevalue", "c2":"somevalue"}, ... },
"a2":{ "b1":{"c1":"somevalue"},"c3":"somevalue"}, ... },
....
}
내가 뭘 원하는 힙 문제없이이 작업을 수행 할 수있는 방법이 있나요
str1 = "{ "b1":{"c1":"somevalue", "c2":"somevalue"}, ... }"
str2 = "{ "b1":{"c3":"somevalue"},"c4":"somevalue"}, ... }"
같은 문자열을 생산하는 것입니다? 나는 단지 문자열을 원하기 때문에 잭슨 트리 접근 방법을 사용할 필요가 있습니다
파이썬에서, 간단하게이 작업을 수행하는 방법도없고 힙 문제 (아무 JVM)
data = json.loads(xxx)
for key,val in data.iteritems():
puts val
몇 가지 생각이있다. 스트리밍 잭슨 (Streaming Jackson)도 옵션이 될 수 있지만 json 형식이 매우 융통성이 있기 때문에 어려움을 씁니다. 모든 제안을 부탁드립니다! 빠르고 메모리를 적게 사용하여 객체 기반 데이터 바인딩 사용
감사
그래서 JSON 스트리밍 API를 찾았지만 사용하는 데 어려움이 있습니다. 우리가 시도한 코드와 당신이 만나는 어려움에 대한 명확한 설명을 보지 않고 어떻게 도울 수 있습니까? –
결과가 문자열 인 경우 즉시 문자열을 구문 분석하지 않는 것이 좋습니다. 'regex'가 당신이 요구하는 것과 일치 할 수 있습니까? – lichengwu
@lichengwu 감사합니다! 너는 조언이 정말 도움이된다. 예, 사실 json을 파싱 할 필요가 없습니다. 나는 순수한 문자열 스트리밍 접근법을 사용해야한다 –