Структура вашего json не соответствует шаблону, поскольку результаты, которые вы оставили, должны быть массивом.
Смотрите, что https://www.json.org/.
Что можно было бы сделать, это следующая структура:
{
Результаты:
[
{"id": 1, "text": "Option 1"},
{"id": 2, "text": "Option 2"}
]
}
Вам необходимо указать в вашем массиве значение, однако вы всегда обновляете свои ссылки на новый массив:
...
private Integer[] id = new Integer [100];
...
public void setId(Integer[] id){
// here you are adding the reference to a new array, overwriting your id reference to which you started with a new Integer[100]
this.id = id;
}
Чтобы массив мог хранить идентификаторы, вам может понадобиться новое свойство для сохранения текущей позиции. И ваш setId должен получить ссылку на Integer вместо целочисленного массива и добавить к этому массиву значение.
private Integer[] id = new Integer[100];
private int nextPosition = 0;
...
// I omit the treatment here so that it does not add a position beyond what its array allows for simplification purposes.
public void setId(Integer[] id) {
this.id[nextPosition] = id;
nextPosition = nextPosition + 1;
}
...
Таким образом, вы бы настаивали на большем количестве ценностей, но, как я понял, это не совсем то, что вам нужно, поскольку структура результата будет оставаться той же, на которую вы жалуетесь:
// Нет связи между идентификаторами и текстами
{
"results":
{
"id": [3509, 8987, 1234, 777, 987],
"text": ["text 1", "text 2", "text 3"]
}
}
Обратите внимание, что результатом является массив сложного объекта, а не объект-значение, такой как String и Integer. Возможно, в идеале вы должны создать новый объект для поведения и связать свойства id и text.
public class ResultsOrganisationChild {
private Integer id;
private String text;
public ResultsOrganisationChild(Integer id, String text){
this.id = id;
this.text = text;
}
// add some gets and sets
}
При желании вы можете использовать List вместо массива, потому что тогда вам не придется беспокоиться о том, что ваш объект будет расти дальше, чем вы могли изначально предвидеть, кроме того, что вам не придется беспокоиться о следующей позиции:
public class ResultsOrganisationUnit {
private List<ResultsOrganisationChild> list = new ArrayList<>();
public void addChild(ResultsOrganisationChild child) {
list.add(child);
}
public List<ResultsOrganisationChild> getChild() {
return this.list;
}
}
Ваш для каждого будет выглядеть так:
ResultsOrganisationUnit results = new ResultsOrganisationUnit();
for(OrganizationUnitNameHistory children: children2) {
ResultsOrganisationChild child = new ResultsOrganisationChild (children.getOrganisationunitCode(), children.getName());
results.addChild(child);
}