Данные типа JSONB для сопоставленияв моем классе картографа, но получил исключение "Ожидается строка, но в строке 1 путь 2 столбца $ был $ BEGIN_OBJECT" - PullRequest
0 голосов
/ 20 июня 2019

Я написал запрос для выборки двух столбцов типа JSONB, и в моем классе преобразования преобразовал тип jsonb в строку и присвоил map<String,String>. Поскольку он может иметь несколько строк, возвращаемых для этого двух столбцов, у меня есть тип возвращаемого значения List<Map<String,String>>. Но при выполнении Get API получено исключение java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 2 path $.

Я знаю, почему возникает эта проблема, она ожидает {, но обнаружила ". Я искал похожую проблему и перепробовал все способы. Пожалуйста, помогите мне в решении этой проблемы. Я даже пытался восстановить свое приложение, но безуспешно.

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

search_Content  :
{"title": "Client Profile","isLiked": false, "summary": "This is summary", "category": "Reference","documentId": 120, "updateDate": "2017-12-03T06:00:00Z"}
 doc_tag:   {"comment": "My comment"}

search_Content  :{"title": "Intermountain Healthcare","isLiked": false, "summary": "This is summary", "category": "Reference","documentId": 126, "updateDate": "2017-12-03T06:00:00Z"}
search_Content  :{"comment": "Tag for this doc"}

В моем классе по картографии:

public List<Map<String,String>> extractData(ResultSet rs) throws SQLException {
    List<Map<String,String>> returnList = new ArrayList<Map<String,String>>();      
    while (rs.next()) {
        Map<String,String> map = new HashMap<String, String>();
        map.put("Doc content",new Gson().fromJson(rs.getString("search_content"),
                new TypeToken<String>() {}.getType()));
        if(rs.getString("doc_tag") != null) {
            map.put("Doc Tag", new Gson().fromJson(rs.getString("doc_tag"),
                new TypeToken<String>() {}.getType()));
        }
        returnList.add(map);
    }
    return returnList;
}

Мой ожидаемый результат:

[
    {
        "Doc content":{"title": "Client Profile","isLiked": false, "summary": "This is summary", "category":        "Reference","documentId": 120, "updateDate": "2017-12-03T06:00:00Z"},
        "Doc Tag":{"comment": "My comment"}
    },
    {
        "Doc content":{"title": "Intermountain Healthcare","isLiked": false, "summary": "This is summary", "category": "Reference","documentId": 126, "updateDate": "2017-12-03T06:00:00Z"},
        "Doc Tag":{"comment": "Tag for this doc"}
    }
]

Но получено исключение:

"message": "java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 2 path $",
...