2016-09-06 137 views
0

我需要下面的幫助。從分析中解析JSON時出錯

我有以下形式從谷歌分析JSON數據:

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

和Java代碼,我必須是:立足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我按照您的建議格式化了。但是,我收到谷歌分析的迴應,大約有100K條記錄,所有這些記錄都不可能插入[,]。如何解決它之前編程解決它..? –

回答

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);