2013-09-01 123 views
0

JSON數據返回時,我有以下格式空解析使用GSON

{"createdAt": "2013-06-02T00:00:00-08:00", "sessionId": "4982b321-1a24-4295-9fce-c106362218ca", "user": 86157463, "type": "Play", "payload": {"itemId": "15869e7", "marker": 604}, "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1", "refId": "b7b4d324", "auth": "38746efc:a1681031"} 

{"createdAt": "2013-06-02T00:00:00-08:00", "type": "Login", "user": 32850778, "sessionId": "a0e125a3-4e52-42a7-b35f-c9382a8a0e9b", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:7.0.1) Gecko/20100101 Firefox/7.0.1", "refId": "dd4d56c5", "auth": "69646ac4:a7a75b53"} 

{"createdAt": "2013-06-02T00:00:24-08:00", "sessionId": "db7d0113-b688-4737-b3b9-5da92e3de23a", "user": 95035757, "type": "Recommendations", "payload": {"recommendedItems": ["10611", "9722e23", "31396", "28828", "20662", "17342", "21070", "28415", "18273", "27930", "35266", "28895", "11108", "12121", "16045", "12203", "11423", "13363e27", "21304", "18724e1", "38111e66", "9232", "36851e45", "31672", "14502"]}, "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19", "refId": "e94bc09f", "auth": "699d7b63:cec0d4e1"} 

JSON數據正如你可以看到每個記錄在不同的排序變化的磁場。當我使用GSON解析上面的代碼我得到結果只爲第一條記錄。我使用下面的代碼

BufferedReader br = new BufferedReader(new FileReader("C:/Users/inhmadala/Desktop/SampleCCP.json")); 
Gson gson = new GsonBuilder().create(); 
JsonReader reader = new JsonReader(new StringReader(br.readLine())); 
reader.setLenient(true); 
//convert the json string back to object 
//JsonReader.setLenient(true); 
DataObject obj = gson.fromJson(reader, DataObject.class); 

有人能告訴我這裏有什麼問題。

回答

1

您的數據文件有三個對象。根據文檔,fromJson方法序列化一個對象,這就是爲什麼你只能獲得一個對象。

一種選擇是改變你的數據文件,它是一個有效的JSON對象,但讓該對象包含所有會話對象的數組

[ 
{createdAt...} 
, 
{createdAt...} 
, 
{createdAt...} 
] 

,否則這將是必要的預處理您的文件使用一些非JSON邏輯(基於空行的分割/修剪文本等),並從循環中調用Json,每次代表一個對象的每個文本塊。

0

我會創建一個包含來自源代碼的所有可能字段的類。這可以確保您始終可以解析JSON字符串。然後,您可以檢查哪些字段是否填充。而且,對JSON字符串的字段排序對解析器來說不是問題。

當然,要做到這一點,你應該有一個有限的可能性,但這似乎是你發佈的例子。