我有一个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)
我有一个MongoTemplate
和MongoConverter
的实例,但我不确定如何使用这些类来执行此任务。
问题是:
获取Update对象的JSON表示的正确方法是什么?
我正在使用spring-data-mongodb 1.1.0.M1版。
答案 0 :(得分: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());
答案 1 :(得分:0)
我遇到了同样的问题,并将SomeClass
转为DBObject
解决了问题:
DBObject dbObject = new BasicDBObject();
dbObject.put("fieldA", "a"); // set all fields of SomeClass
...
update.set("field", dbObject);