2014-10-20 2 views
0

Я пытаюсь обрабатывать данные Json в Java. У меня есть данные в формате ниже (это вложенная структура данных с массивами и т.д.)Плоские данные 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», но это может быть любая структура объекта.

Я прошел через Jackson или Gson API, но никто не выполняет это требование. Есть ли какой-нибудь API, который может помочь? или любой другой выход?

Thanks

ответ

0

Вам необходимо сделать это за 2 шага.

Во-первых, вы должны проанализировать свой CSV. Я рекомендую superCSV. Иногда Parsing CSV может показаться необычным, поэтому я действительно рекомендую вам использовать библиотеку для этого.

Во-вторых, вы можете сериализоваться в JSON. Затем вы можете использовать GSON, jackson, flexjson, что угодно.

+0

Спасибо @Leo за ответ !! Но я забыл упомянуть, что структура объекта динамична, я не знаю заголовок заранее ... в этом случае, я думаю, SuperCSV не будет работать. –

+0

ему не нужен заголовок, но, конечно, код не может просто угадать, как интерпретировать данные. Вы должны как-то закодировать его сами. – Leo

0

После долгого Google ... Я обнаружил, что единственный вариант для представления коллекции на основе структуры объекта в плоский файл повторяется строки,

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)

Смежные вопросы