ジャクソンAPIにはJSONObject
がありません。 JSONObject
を返すのではなく、getterとsetterを持つメッセージプロパティを持つMapまたはJava Beanを返すことができます。
だから、
public class MyMessage {
private String message;
public void setMessage(final String message) {
this.message = message;
}
public String getMessage() {
return this.message;
}
}
、あなたの方法は次のように減少します。
private MyMessage(String message) {
MyMessage myMessage = new MyMessage();
myMessage.setMessage(message);
return myMessage;
}
この変更のもう一つの側面は、バックJSON文字列にMyMessageを変換するには、シリアル化コードを変更することになります。ジャクソンは、Javaビーンズ、デフォルトでマップは、あなたが例えばJSONObject
を作成する必要はありません、
private String serializeMessage(MyMessage message){
//Note: you probably want to put it in a global converter and share the object mapper
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(message);
}
上記は、私は簡潔にするための例外をスキップした{message: "some message"}
を返しますありません。
したがって、 'jacksonObj'が返すオブジェクトですか? – kasavbere
jacksonに関するすべての疑問を持って、私はorg.codehaus.jacksonがorg.jsonよりシンプルになることを望んでいました。あなたの助けを借りて投票してください。 – kasavbere
@kasavbere:元の質問をよりよく反映するように答えを編集しました。シンプルさについては、それほど単純ではありませんが、あなたがそれでやりたいことに依存します。簡単なシリアライゼーションのために、 'org.json'を使う方が簡単です。しかし、大規模なオブジェクトのシリアライゼーションを行い、いくつかのカスタムニーズがある場合(例えば、 'Date'フィールドを' String'値としてシリアライズする場合)、Jacksonはこれまでのところ最良の選択肢です。 –