javax.json产生难以理解的json

我有一个Java类与两个atrributes,我转换为json使用这种方法。 我跟着这个其他答案: 返回JSONArray而不是JSONObject,Jersey JAX-RS

public String toString(){ // takes advantage of toString() implementation to format {"a":"b"} JsonObject json = Json.createObjectBuilder() .add("sentence", sentence) .add( "category", category).build(); return json.toString(); } 

我得到的string封装到一个string的ArrayList,并通过HTTP(我使用泽西岛)发送:

 return Response.status(200).entity(response).build(); 

如何,节点客户端正在使用不能正确parsing它:它获取数组部分,完美地访问元素。 但不是JSON键和值; 返回undefined:

 jsonRespuesta = JSON.parse(body)[0]; console.log(jsonRespuesta); console.log("Frase: " +jsonRespuesta.sentence + " ,Categoria: " + jsonRespuesta.category); 

返回:

 {"sentence":"hola","category":"2"} Frase: undefined ,Categoria: undefined 

什么是失败? 如果有帮助,使用wireshark捕获数据包会将数组成员显示为string

您的Java客户端是否对JSON进行了两次编码? 我注意到你正在添加jsonstring到一个ArrayList,但是你应该真的把对象添加到ArrayList,然后把整个事情串起来。

尝试在jsonRepuesta再次使用JSON.parse() ,看看是否得到你想要的。 或者,注销一个types的typeof jsonRepuesta – 看起来还是一个string。

另外,看到这里 。