4

オブジェクトのインスタンスがあり、Updateそれを String JSON 表現に変換して、後で使用できるようにしたいと考えています。

次のように更新オブジェクトを作成しました。

Update update = new Update();
update.set("field", new SomeClass());
update.unset("otherField");
// etc

私の最初の試みは:

update.getUpdateObject().toString();

このアプローチはほとんどの場合に機能しましたが、 のインスタンスをシリアル化できなかったため、ときどき失敗しましたSomeClass。これはスタックトレースでした:

java.lang.RuntimeException: json can't serialize type : class com.example.SomeClass
at com.mongodb.util.JSON.serialize(JSON.java:261)
    at com.mongodb.util.JSON.serialize(JSON.java:115)
    at com.mongodb.util.JSON.serialize(JSON.java:161)
    at com.mongodb.util.JSON.serialize(JSON.java:141)
    at com.mongodb.util.JSON.serialize(JSON.java:58)
    at com.mongodb.BasicDBObject.toString(BasicDBObject.java:84)

MongoTemplateandのインスタンスを利用できますが、MongoConverterこれらのクラスを使用してこのタスクを実行する方法がわかりません。

質問は:

Update オブジェクトの JSON 表現を取得する正しい方法は何ですか?

spring-data-mongodb バージョン 1.1.0.M1 を使用しています。

4

2 に答える 2

1

これを行うには、

Update update = new Update();

JSONObject jsonObject = new JSONObject(new SomeClass());

update.set("field",JSON.parse(jsonObject.toString()));
update.unset("otherField");

System.out.println(update.getUpdateObject().toString());
于 2012-11-19T05:20:22.133 に答える
0

私は同じ問題に遭遇し、次のようにして解決しSomeClassましたDBObject:

DBObject dbObject = new BasicDBObject();
dbObject.put("fieldA", "a"); // set all fields of SomeClass
...

update.set("field", dbObject);
于 2016-12-12T01:33:58.897 に答える