我在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。
答案 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表示。