Как работать с динамической аннотацией SerializedName? - PullRequest
0 голосов
/ 07 мая 2019

У меня есть json, который я преобразую с помощью gson в модель области, над аннотацией @ SerializedName.

Но иногда в json есть неизвестный ключ, который я хочу сериализовать в строку.

public class example extend Realmobject{
@SerializedName("example1")
@Expose
private String exampleNr1;
@SerializedName("example2")
@Expose
private String exampleNr2;


private String someOtherValue;
Getter / Setter here...

}

Json похож на это

[
{
"example1": "1234",
"example2": "1234",
"x": "dynamic"}, {
"example1": "1454",
"example2": "165456",
"xy": "dynamic"}]

Теперь я хочу сериализовать ключи x и xy (иногда sxtimes называется xyz и т. Д.)строка someOtherValue.За @SerializedName (value = "", alternate = {""}) у меня нет шансов, потому что я не знаю имени поля.

Я сериализирую это по списку woList = gson.fromJson (parentArray, new TypeToken> () {} .getType ());

1 Ответ

0 голосов
/ 07 мая 2019

Вы можете сначала перевести его в JSONObject.Затем вы можете просмотреть набор ключей внутри JSONObject.

    JSONObject json = gson.fromJson(stringJson, JSONObject.class);
    Iterator<String> set = json.keys();
    while(set.hasNext()) {
        String dynamicAttributeName = set.next();
    }
    json.get(dynamicAttributeName); //to get the value 
...