Мул не может конвертировать JSON-ответ на объект - PullRequest
0 голосов
/ 12 февраля 2019

Я не могу преобразовать ответ JSON от REST WS в объект компонентом JSON-to-Object в Mule (3.8 CE времени выполнения).Возвращенный класс в компоненте java.util.HashMap (я также пробовал ArrayList) JSON-ответ

[{
        "userId": 123456,
        "otherId": 654321
    }, {
        "userId": 123457,
        "otherId": 654321
    }, {
        "userId": 123458,
        "otherId": 654321
    }
]

Я получил ошибку

ERROR 2019-02-12 11:37:32,386 [[demorestmapper].HTTP_Listener_Configuration.worker.01] org.mule.exception.DefaultMessagingExceptionStrategy: 
********************************************************************************
Message               : Failed to transform from "json" to "java.util.HashMap"
Payload               : org.glassfish.grizzly.utils.BufferInputStream@77054f71
Transformer           : JsonToObject{this=2c88a3e8, name='JsonToHashMap', ignoreBadInput=false, returnClass=SimpleDataType{type=java.util.HashMap, mimeType='application/json', encoding='null'}, sourceTypes=[SimpleDataType{type=java.io.Reader, mimeType='*/*', encoding='null'}, SimpleDataType{type=java.net.URL, mimeType='*/*', encoding='null'}, SimpleDataType{type=java.io.File, mimeType='*/*', encoding='null'}, SimpleDataType{type=java.lang.String, mimeType='*/*', encoding='null'}, SimpleDataType{type=java.io.InputStream, mimeType='*/*', encoding='null'}, SimpleDataType{type=[B, mimeType='*/*', encoding='null'}]}
Element               : /demorestmapperFlow/processors/3 @ demorestmapper:demorestmapper.xml:18 (JSON to Object)
Element XML           : <json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"></json:json-to-object-transformer>
--------------------------------------------------------------------------------
Root Exception stack trace:
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.HashMap out of START_ARRAY token
 at [Source: java.io.InputStreamReader@563690a7; line: 1, column: 1] 

1 Ответ

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

Это потому, что это массив JSON.Поэтому вам необходимо указать в преобразователе, чтобы преобразовать его в массив карт / объектов:

Для массива:

 <json:json-to-object-transformer returnClass="java.util.HashMap[]" />`

против карты:

<json:json-to-object-transformer returnClass="java.util.HashMap" />`
...