2016-07-06 3 views
1

私はこのメソッドを使用してjsonに変換する2つの属性を持つJavaクラスを持っています。私はこの他の答えを追っ: Return JSONArray instead of JSONObject, Jersey JAX-RSjavax.jsonは理解できないjsonを生成します

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(); 
} 

私が手文字列が文字列のArrayListの中にカプセル化、およびHTTP(私はジャージーを使用しています)を経由して送信されます。

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

どのようにこれまでに、ノードクライアントはそれを正しく解析できません:配列部分を取得し、要素に完全にアクセスします。しかし、jsonのキーと値ではありません。 リターンは未定義:

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を使用してパケットをキャプチャすると、配列メンバーが文字列として表示されます

答えて

1

JavaクライアントがJSONを2回エンコードしていますか?私はあなたがArrayListにjson文字列を追加していることに気づいたが、実際にはArrayListにオブジェクトを追加してから、すべてを一度ストリング化する必要があります。

JSON.parse()をもう一度jsonRepuestaにもう一度お試しください。お探しのものがあればご覧ください。代わりに、ログアウトするtypeof jsonRepuesta - まだ文字列のように見えます。

また、hereを参照してください。

+1

キーは、作成とArrayList であり、toStringを配列全体にアペアします。 jsonは実際に2回エンコードされました。 – ledermauss

関連する問題