2016-09-06 3 views
0

아래에서 도움이 필요합니다.애널리틱스에서 JSON을 구문 분석하는 동안 오류가 발생했습니다.

나는 형식 아래에서 구글 분석에서 JSON 데이터를 가지고 내가 가진

{"visitNumber":"3","fullVisitorId":"33283173096445"} 
{"visitNumber":"2","fullVisitorId":"58516104158964"} 
...............(upto 100k records) 

및 자바 코드는 다음과 같습니다 GSON 라이브러리에

JsonParser parser = new JsonParser(); 
JsonElement root = parser.parse(jsonData); 

을 기반으로. 이걸 실행하는 동안 "MalformedJsonException"이 발생합니다.

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected EOF at line 1 column 53 
+0

여기서 오류가 훨씬 명확 해 졌는지 확신 할 수 없습니다. 그것은 형식이 잘못된 JSON (단일 문서)입니다. "최대 100k"의 JSON 문서를 분리하여 사용하기 때문에 괜찮습니다.하지만 함께 사용하면 형식이 잘못되었습니다. – rmlan

+0

각 레코드는 (쉼표)로 구분해야합니다. 즉 당신이 할 경우 말했다 것 : [{ "visitNumber": "3", "fullVisitorId": "33283173096445"}, { "visitNumber": "2", "fullVisitorId": "58516104158964"}] 그것은 것 유효한 JSON이 되십시오 – dosdebug

+0

@ssc 제안 된 방식대로 형식을 지정했습니다. 하지만 Google 애널리틱스에서이 응답을 받고 있는데 약 100,000 개의 레코드가 있습니다. 모두 [,]를 삽입하는 것은 불가능합니다. 어떻게 그것을 구문 분석하기 전에 프로그래밍 방식으로 고칠 수 있습니까? –

답변

0

나는 아래에서 시도해 보았습니다.

 BufferedReader br = new BufferedReader(fileReader); 
     String line = br.readLine(); 
     JsonParser parser = new JsonParser(); 
     JsonObject root = (JsonObject)parser.parse(line);; 
0

각 행을 구문 분석하고 수동으로 배열에 추가해야합니다. split the line (아래 그림 참조) String.split()을 사용하거나 파일을 한 줄씩 읽은 다음 수동으로 배열에 추가하십시오.

var data = jsonData.split("\\r?\\n"); 
var finalData = []; 

for (var i = 0, len = data.length; i < len; i++) 
{ 
    JsonParser parser = new JsonParser(); 

    JsonElement root = parser.parse(data[i]); 
    finalData.push(root); 
} 

console.log(finalData); 
관련 문제