2016-09-06 187 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);