Spring Boot - получите данные из БД, сохраните их в списке и проанализируйте до JSON, используя Джексона - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь получить данные из нескольких таблиц и поместить их в список массивов класса, а затем преобразовать их в JSON Объект. Но когда я пытаюсь разобрать его в json, используя Jackson Object Mapper, все списки преобразуются, как показано ниже. Использование ObjectMapper().writeValueAsString для десериализации из объектов класса в json

```{
"College": [
{
"institution": [
                {
                    "instId": "T34",
                    "Country": "India",
                    "Code": "T33"
                },
                {
                    "instId": "T22",
                    "Country": "India",
                    "Code": "T22"
                }
                ],
"Rating": [
                {
                    "star": "4"
                    "comments": "good"
                },
                {
                    "star": "2"
                    "comments": "ok"
                },
}
]
}```

Но я хочу результат, как показано ниже

{
"College": [
{
"institution": [
                {
                    "instId": "T34",
                    "Country": "India",
                    "Code": "T33"
                }
                ],
"Rating": [
                {
                    "star": "4"
                    "comments": "good"
                }
            ]

},
{
"institution": [
                {
                    "instId": "T22",
                    "Country": "India",
                    "Code": "T22"
                }
                ],
"Rating": [
                {
                    "star": "2"
                    "comments": "ok"
                }
            ]

}
]
}

Выше приведен только пример.

Пожалуйста, помогите получить желаемый результат.

Ниже приведены файлы классов, используемые.

public class AllCollege{
List<College> college = new ArrayList<>();

public List<College> getCollege() {
        return college;
    }

    public void setCollege(List<College> college) {
        this.college = college;
    }

}


public class College{

private List<Institution> institution = new ArrayList<>();
private List<Rating> rating = new ArrayList<>();

    public List<Institution> getInstitution() {
        return institution;
    }

    public void setInstitution(List<Institution> institution) {
        this.institution = institution;
    }

    public List<Rating> getRating() {
        return rating;
    }

    public void setRating(List<Rating> rating) {
        this.rating = rating;
    }

}



public class Institution {

    private String instId;
    private String country;
    private String code;

    public String getInstId() {
        return instId;
    }
    public void setInstId(String instId) {
        this.instId = instId;
    }

    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }

    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
}


public class Rating {

    private String star;
    private String comments;

    public String getStar() {
        return star;
    }
    public void setStar(String star) {
        this.star = star;
    }

    public String getComments() {
        return comments;
    }
    public void setComments(String comments) {
        this.comments = comments;
    }

}

Ниже показано, где данные из таблиц устанавливаются в ArrayList, а затем преобразуются в json строку.

session = sessionFactory.openSession();
String sql = "from institution";
Query<InstDto> query = session.createQuery(sql);
List<Institution> configdtoList =query.list();
College alc = new College();
alc.setInstitution(configdtoList);
.
.
.
similarly Rating table.
List<College> clist = new new ArrayList<>();
clist.add(alc);
AllCollege ac = new AllCollege();
ac.setCollege(clist);

String responseJson = new ObjectMapper().writeValueAsString(ac)

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Я создал HashMap, содержащий List<AllCollege> в качестве значения, а затем использовал json синтаксический анализатор, который работал как ожидалось.

0 голосов
/ 12 февраля 2020

структура класса, как показано ниже, поможет вам разобрать:

public class Sample {

@JsonProperty("College")
private List<College> college;

}

public class College {

private List<Institution> institution;
@JsonProperty("Rating")
private List<Rating> rating;

}

public class Rating {

private String comments;
private String star;

}
 public class Institution {

@JsonProperty("Code")
private String code;
@JsonProperty("Country")
private String country;
private String instId;

}
...