Vasily_Koshkin
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Кто-нибудь с GSON работал? Есть вот такой класс: Код: public class EnumDescriptor extends ElementDescriptor { public static class Field { public String name; public String serializedName; public String getName() { return name; } public String getSerializedName() { return serializedName; } } @SerializedName("enum") public String name; public List<String> data; private List<Field> fields; @Override public String getName() { return name; } private void preprocess() { if (fields != null) return; fields = new ArrayList<Field>(); for (String value : data) { Field field = new Field(); field.serializedName = value; field.name = toJavaEnumName(value); fields.add(field); } } @Nonnull public List<Field> getFields() { preprocess(); return fields; } @Override public String getTemplateName() { return "enum"; } @Override public String toString() { return Objects.toStringHelper(this) .add("name", getName()) .add("data", data) .add("fields", fields) .toString(); } } | Есть вот такой JSON: https://raw.githubusercontent.com/qemu/qemu/master/qapi/block-core.json Всё, в принципе, неплохо, но спотыкается на конструкциях вроде: Цитата: { 'enum': 'BlockdevAioOptions', 'data': [ 'threads', 'native', { 'name': 'io_uring', 'if': 'defined(CONFIG_LINUX_IO_URING)' } ] } | Оно и понятно: вложенный объект - не строка. Только вот как тут десериализатор переопределить, если тип данных заранее неизвестен? Поделитесь опытом, кому не лень. Спасибо! |