2014-10-20 52 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)来过滤或者关联同一个对象