Вы пропустили пункт, что у вас должен быть третий класс, и он должен иметь свойство типа java.util.List или список массивов и имен для вашего примера.
например
public class JsonHolder {
// appropriate Json/Jackson annotations ommitted
private String setAccId;
private String groupOf;
private boolean isEnabled;
private List<DynamicJsonHelper> list;
private String[] sort;
// .. getter/setters ...
}
тогда вам нужно создать этот объект, и когда вы создали свой DynamicJsonHelper, поместите его в список или массив.
В конце концов вы можете сериализовать объект JsonHolder и увидите свой список Java или массивкак массив JSON.
UPD: просто обратите внимание, что в структуре JSON, например, { ... }
- это объект, а в Java должен быть класс для него.
Итак, начиная со структуры JSON, которую вы разместили
{
"setAccId":"12345",
"groupOf":null,
"isEnabled":false,
"list":[
{
"student":"jim",
"type":"S_A",
"retro":null
},
{
"student":"bob",
"type":"S_A",
"retro":null
}
],
"sort":[]
}
это объект (пусть его назовут JsonHolder
) со свойствами с именем setAcctId, groupOf, isEnabled, list, sort
Так что вам нужно иметь класс Java для него (аналогично тому, как вы делали это для DynamicJsonHelper
. Вы можетеиспользуйте любые аннотации @Json, которые вы хотели бы, таким же образом (я их пропустил и оставил для вас). Даже у вас их не будет Джексон или любой другой сериализатор JSON будет использовать имена свойств в классе Java по умолчанию.
Я имею в виду, например, выr @JsonProperty ("accId")
@JsonProperty("accId")
public void setAccId(String accId)
не требуется, если getter / setter / property назван также getAcctId, setAcctId, acctId.Джексон будет использовать это, если нет аннотации @JsonProperty.
Кстати, лучше сделать это так, как вы делали это для удобства чтения кода.: -)
По вашему вопросу: list
и sort
свойства в JSON являются массивами.Джексон анализирует классы коллекций Java, такие как List, Set или Arrays, в массивы JSON.
Затем в соответствии с требуемой структурой JSON свойство list
представляет собой такую коллекцию объектов DynamicJsonHelper
, которые вы создали.в классе Java, List или Array - ваш выбор - используйте то, что вам больше подходит.Я рекомендую использовать список, а не массив.Работа с массивами в Java не очень хорошая идея.: -)
Итак, вы только что создали класс Java DynamicJsonHelper
только для объектов, которые должны находиться в list
свойстве объекта JsonHolder
.Осталось создать этот класс "JsonHolder" и передать этот объект Джексону, чтобы сериализовать его в требуемую структуру JSON.
Существует множество аннотаций @Json, которые можно использовать, чтобы разрешить или нет null
или пустые значения.изменить имена свойств, исключить сериализацию свойств класса Java и т. д., и т. д. Все в ваших руках ... удачи!