Как преобразовать Json, поля которого меняются в зависимости от параметров, в Gson? - PullRequest
1 голос
/ 12 июля 2019

Я использую модификацию, и я пытаюсь преобразовать динамический Json в Gson, но поля Json меняются в зависимости от параметров. Например, если у меня есть параметры 1,2

Формат JSON:

{  
   "data":{  
  "1":{  
     "urls":{  
        "website":[  
           "https://bitcoin.org/"
        ],
        "source_code":[  
           "https://github.com/bitcoin/"
        ]
     },
     "logo":"https://s2.coinmarketcap.com/static/img/coins/64x64/1.png"
     ... 

  },
  "2":{  
     "urls":{  
        "website":[  
           "https://litecoin.org/"
        ],
        "source_code":[  
           "https://github.com/litecoin-project/litecoin"
        ]
     },
     "logo":"https://s2.coinmarketcap.com/static/img/coins/64x64/2.png"
     ...
      }
   }
}

Обратите внимание, что возможно иметь любое количество параметров.

1 Ответ

0 голосов
/ 12 июля 2019

Если возможно, вместо того, чтобы иметь тип данных как объект, вы можете сделать его массивом так:

{
  "data": [
    {
      ...
    },
    {
      ...
    }
  ]
}

Теперь, когда вы имеете дело с вашим элементом данных, вы можете легко проверить длину и посмотреть, сколько их.Предполагая, что вы уже проанализировали свой Json и имеете доступ к «данным», код Java для выполнения каких-либо действий с этими данными будет выглядеть следующим образом:

JsonArray array = dataElement.getAsJsonArray();
for(JsonElement element : array){
    JsonObject object = element.getAsJsonObject();
    String logo = object.getAsJsonPrimitive("logo").getAsString();
    ...
}

Если это невозможно, то у вас будетсделать что-то вроде этого:

JsonObject dataObject = ...
int i = 1;
while(true){
    JsonElement element = dataObject.get("" + i);
    if(!element.isJsonObject()){
        break;
    }
    JsonObject object = element.getAsJsonObject();
    // do stuff with object
    i++;
}
...