ObjectNode返回未知值

时间:2018-06-07 06:07:10

标签: java json jax-rs

我在java-rest中使用com.fasterxml.jackson.databind.node.ObjectNode来返回一个简单的值:

@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,jackson 2.6,使用WebSphere 8.5 default jax-rs libs。

1 个答案:

答案 0 :(得分:0)

似乎当你将ObjectNode作为返回参数传递时,杰克逊反序列化了ObjectNode而不是它的内容。 因此,不要返回ObjectNode,而是尝试创建类,例如" Url"并返回它。 以下是该课程的样本:

public class Url {

   private String url;

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

   public String getUrl() {
       return url;
   }
}

当您返回时,它将自动转换为JSON表示。