У меня есть несколько csv-файлов, которые я хочу преобразовать в json.К сожалению, структура CSV не соответствует желаемому формату JSON.а) потому что CSV является плоской структурой и JSON должен иметь вложенную структуру.b) поскольку заголовки столбцов не соответствуют именам свойств json.
Иллюстрирующий минимальный пример CSV:
ColumnNameX,ColumnNameY,ColumnNameZ
valueX,valueY,valueZ
следует преобразовать в этот JSON:
{
"XZObject": {
"absurdlyNotNamedLikeCsvHeading": "valueX",
"AlsoNOTColumnNameZ": "valueZ" },
"YyyyyWhy": {
"ThisResemblesColumnNameY": "valueY"
}
Я наивно пошел бы и сделал несколько представляющих POJO-классов и вставил бы значения по позиции - вот так (псевдокод):
class Container {Fields:XZObject,YyyyyWhy}
class XZObject {Fields:absurdlyNotNamedLikeCsvHeading,AlsoNOTColumnNameZ}
class YyyyyWhy {Fields:ThisResemblesColumnNameY}
new XZObject(absurdlyNotNamedLikeCsvHeading=csvLineElements[0],AlsoNOTColumnNameZ=csvLineElements[2])
new YyyyyWhy(ThisResemblesColumnNameY=csvLineElement[1])
new Container(XZObject,YyyyyWhy)
… тогда япреобразует объект Container в JSON с помощью gson.
Проблема в том, что когда в схему добавляется поле в CSV, мне придется корректировать каждое позиционное сопоставление после нового столбца.
Так что мне интересно: есть ли простой способ сопоставить столбцы CSV по заголовку с определенным свойством JSON?Желательно с помощью gson-lib.
Другими словами: можно ли, например, отобразить значение в столбце с заголовком "ColumnNameZ"
на свойство "XZobject.AlsoNOTColumnNameZ"
простым способом?