Десериализовать поля JSON, которые могут иметь разные типы - PullRequest
0 голосов
/ 05 июня 2019

Я использую gson для десериализации файла json с объектом.Различные части json имеют массив «properties», и каждое свойство само является массивом, содержащим до 6 необязательных полей, которые всегда будут одного типа, с седьмым полем «default», которое может содержать логическое значение, строку илиинт.Мой класс объектов выглядит следующим образом:

public class Object {
  private string name;
  private Map<String, Property> properties;
  //Code
  }
    class Property {
      private String type;
      ...
      @SerializedName("default")
      private default_field;
      //...
    }
  }

. Я вижу свои варианты создания либо создания 3 типов Property, каждый из которых отличается только типом default_field, либо всегда принимая его как строку ииметь дело с преобразованием его в правильный тип, когда мне нужно на самом деле использовать значение для чего-то.Вариант 2 может вызвать проблемы, если некоторые значения поля default_field содержат числа в виде строк, а другие содержат числа в виде int.Когда я в конечном итоге передам эти значения, я не смогу сказать, какого типа они возникли.

Есть ли какой-то расплывчатый смысл, принимая значение этого поля, все еще зная ожидаемый тип данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...