2014-10-20 76 views
0

我想在Java中處理Json數據。我在下面格式的數據(它是嵌套的數據結構與陣列等)平的csv數據到Json

person.name,person.friend[0],person.friend[1],person.address.city,person.address.country 
1,x,y,kolkata,india 
2,a,b,london,uk 

第一行是頭表示嵌套對象的層次結構。我想在下面格式的JSON,

{ 
"data" : [ 
{ 
    "name" : "1", 
    "friend" : ["x","y"], 
    "address" : { "city" : "kolkata", "country" : "india" } 
}, 
{ 
    "name" : "2", 
    "friend" : ["a","b"], 
    "address" : { "city" : "london", "country" : "uk" } 
} ] 
} 

的對象結構是動態的,我不知道事先列或報頭,即我不能使用任何預定義的POJO獲得用該數據填充。在這個例子中,它是「Person」對象,但它可以是任何對象結構。

我已經通過傑克遜或Gson API,但似乎沒有滿足這一要求。有什麼API可以幫助嗎?或任何其他出路?

謝謝

回答

0

您需要在2個步驟中完成。

首先,你必須解析你的CSV。我建議superCSV。解析CSV可能有時候很花哨,所以我真的建議你爲此使用一個庫。

其次,你可以序列化成JSON。那麼你可以使用GSON,jackson,flexjson,無論如何。

+0

感謝@Leo的回覆!但我忘了提及,對象結構是動態的,我不知道預先的頭...在這種情況下,我想,SuperCSV將無法正常工作.. .. – 2014-10-20 10:58:41

+0

它不需要標題,但是當然,代碼不能簡單地猜測如何解釋數據。你必須以某種方式自己編碼。 – Leo 2014-10-20 12:37:57

0

長谷歌之後...我發現,唯一的選擇就是代表在平面文件的集合中的基於對象的結構重複行,

person.name,person.friends,person.address.city,person.address.country 
1,x,kolkata,india 
1,y,kolkata,india 
2,a,london,uk 
2,b,london,uk 

其中非陣列元件重複。我們需要從這裏形成一個json,然後需要通過它的ID(這裏是person.name)來過濾或者關聯同一個對象