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。
另外,看到这里 。