GSON анализирует вложенные JSON объектов по-разному в зависимости от среды - PullRequest
1 голос
/ 05 августа 2020

У меня есть вложенный объект JSON, например:

{
    "references": [
      "CONTRACT", 
      "DURATION", 
      "EDUCATIONLEVEL", 
      "EXPERIENCELEVEL", 
      "LANGUAGELEVEL", 
      "CIVILITY", 
      "AVAILABILITY"
    ], 
    "unavailablenetworks": [
      {
        "content": "Service unavailable", 
        "id": "100"
      }, 
      {
        "content": "Service unavailable", 
        "id": "200"
      }
    ], 
    "urls": {
      "apiurl": "https://xxxxxxxxxxx", 
      "base": "https://yyyyyyyyyyyyyy", 
      "video": "https://zzzzzzzzzzzzz"
    }
}

и следующие классы Java:

public class Version implements Serializable {

    @SerializedName("references")
    private List<String> references;

    @SerializedName("unavailablenetworks")
    private List<UnavailableNetwork> unavailableNetworks;

    @SerializedName("urls")
    private BKUrls urls;
} 

public class BKUrls implements Serializable {

    @SerializedName("apiurl")
    private String api;

    @SerializedName("base")
    private String base;

    @SerializedName("video")
    private String video;

    @SerializedName("edition")
    private String edition;

    @SerializedName("offer")
    private String offer;

    @SerializedName("search")
    private String search;
}

public class UnavailableNetwork implements Serializable {

    @SerializedName("content")
    private String content;

    @SerializedName("id")
    private String id;
}

Методы Getter и Setter здесь опущены для упрощения чтение.

Я использую GSON для анализа JSON:

Gson g = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
Version version = g.fromJson(json.toString(), Version.class);

Этот код используется в приложении Android, которое я разрабатываю.

Если Я устанавливаю и запускаю приложение на смартфоне Android в режиме отладки с помощью Android Studio, Gson правильно анализирует объект Json.

Но если я попытаюсь создать apk, а затем , установите этот apk на тот же смартфон, Gson не анализирует JSON полностью. Результат такой:

{
    "references": [
      "CONTRACT", 
      "DURATION", 
      "EDUCATIONLEVEL", 
      "EXPERIENCELEVEL", 
      "LANGUAGELEVEL", 
      "CIVILITY", 
      "AVAILABILITY"
    ], 
    "unavailablenetworks": [
      {
        "id": "100"
      }, 
      {
        "id": "200"
      }
    ], 
    "urls": {
    }
}

«ссылки» в порядке

«недоступные сети» не заполнены, отсутствует поле «контент»

«URL-адреса» пусто

Я не понимаю, почему Gson не работает так же? Почему некоторые данные отсутствуют при использовании apk при использовании Android Studio в режиме отладки, все данные в порядке?

...