ObjectNode возвращается с неизвестными значениями - PullRequest
0 голосов
/ 07 июня 2018

Я использую com.fasterxml.jackson.databind.node.ObjectNode в своем java-rest, чтобы вернуть простое значение:

@POST
@Path ("/JsonApi")
@Consumes("application/json")
@Produces("application/json")
public ObjectNode postEmployee(JSONObject jsonObject)throws Exception{
    String onlineUrl = MatafConfig.getConfigParam(request,
            m_CONFIG_REDIRECT);
    if(m_mapper == null)
        m_mapper = new ObjectMapper();
    ObjectNode jNode = m_mapper.createObjectNode();
    jNode.put("url", onlineUrl); // debug shows {"url": "/mySite"}

    //return url


    return jNode;
}

Значение в jNode соответствует ожидаемому {"url": "/mySite"}, но на стороне клиента оно показывает другой json-

{"nodeType":"OBJECT","valueNode":false,"containerNode":true,"missingNode":false,"array":false,"object":true,"pojo":false,"number":false,"integralNumber":false,"floatingPointNumber":false,"short":false,"int":false,"long":false,"float":false,"double":false,"bigDecimal":false,"bigInteger":false,"textual":false,"boolean":false,"null":false,"binary":false}

Я понятия не имею об этом json, я думаю, что это какой-то объект по умолчанию из jax-rs может быть.

Подробнее: java 8, Джексон2.6, с использованием WebSphere 8.5 по умолчанию jax-rs libs.

1 Ответ

0 голосов
/ 07 июня 2018

Кажется, что когда вы передаете ObjectNode в качестве возвращаемого параметра, Джексон десериализует ObjectNode, а не его содержимое.Поэтому вместо того, чтобы возвращать ObjectNode, попробуйте создать класс, например «Url», и вернуть его.Вот пример класса:

public class Url {

   private String url;

   public Url(final String url) {
       this.url = url;
   }

   public String getUrl() {
       return url;
   }
}

Когда вы вернете его, он будет автоматически преобразован в представление JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...