создать динамическое отображение для анализа нескольких входных файлов в объект в kotlin - PullRequest
0 голосов
/ 11 февраля 2019

Допустим, у меня есть данные json, которые могут иметь разные имена ключей для одного и того же поля данных

Тип Json A

{"width": 1024, "height":768, "color": "# ff0000"}

также есть отображение json, которое дает мне то, что attirbute должно сопоставить с тем, что в классе данных Json типа A

{"width": w, "height": h, "color": "Color"}

Json Тип B

{"widthOfobj": 1024,"heightOfobj": 768, "colorOfobj": "# ff0000"}

Документ отображения типа Json B

{"widthOfobj": w, "heightOfobj": h, "colorOfobj": "Color"}

в моем классе данных kotlin Я определил obj как

data class dimension(W: int, H: int, Color: String)

, теперь я хочу сопоставить json типа A или B скласс данных kotlin с помощью чтения документа сопоставления.Как бы я поступил так?

вот поток, о котором я думаю для ясности

код sudo

 Data class dimmenison( W: int, H: int, Color:String)// already defined
//Read mapping document to map 
    val Map = readmappingfile(mappingfile)  //e. g  Width to W
                                      //      Height to H
Val input Data= readJson(input) //      { "width": 1024, "height": 768, "color": "#ff0000" }
Val show result = applytransformation( mappingfile, input)
// inside applytransformation Read the Map and data and serialize it to data class  
//oneway of just serializing  it would be using gson 
val result = gson.fromJson(input,dimmension::class.java) // this would work if input was in format ( w->v , h-> v , Color->v) 

// как мне сделать это изменение, чтобы преобразовать вес в W, прежде чем я вызовуКод GSON выше, чтобы сериализовать его в класс данных.Обратите внимание, что он должен быть достаточно динамичным, поэтому мы не пишем жестко закодированное отображение.

1 Ответ

0 голосов
/ 12 февраля 2019

Я думаю, что вы используете специальный десериализатор для gson.

проверьте это пример .

...