我想用JSON获取HTTP PUT请求并将其存储在Mongo中。我怎样才能做到这一点?我最好的是:
@RestController
public class ConfigurationController {
@Autowired
private MongoTemplate mongoTemplate;
@RequestMapping
public DBObject index() {
return mongoTemplate.getCollection("foo").findOne();
}
@RequestMapping(method = RequestMethod.PUT)
ResponseEntity<?> add(@RequestBody DBObject object) {
mongoTemplate.insert(object, "foo");
return new ResponseEntity<>(null, HttpStatus.CREATED);
}
}
答案 0 :(得分:9)
In newer versions of Mongodb (mongo-java-driver 3.0+) the API uses org.bson.Document, so your solution should look like this:
@RestController
public class ConfigurationController {
@Autowired
private MongoTemplate mongoTemplate;
@RequestMapping(method = RequestMethod.PUT)
ResponseEntity<?> add(@RequestBody String jsonString) {
Document doc = Document.parse(jsonString)
mongoTemplate.insert(doc, "foo");
return new ResponseEntity<>(null, HttpStatus.CREATED);
}
}
答案 1 :(得分:3)
不是最好的解决方案,但这样的事情应该有效 - 更改控制器以接受任何字符串:
... add(@RequestBody String object) ...
并关注http://www.mkyong.com/mongodb/java-mongodb-convert-json-data-to-dbobject/
DBObject dbObject = (DBObject) com.mongodb.util.JSON.parse(object);
答案 2 :(得分:1)
你可以使用 json-simple lib ,它有一个小而优雅的json对象,并在你的模型POJO中使用它,它将自动转换为mongo对象类型
private JSONObject jsonSettings;
答案 3 :(得分:0)
我不确定是否有帮助,如果您可以选择在文档中创建一个Map,然后创建它,然后在哈希图中填充“键-值”对并将其存储。它将按您期望的方式存储(这是JSON)。如果您在编译时不知道键名或值的名称,这将很有帮助。
答案 4 :(得分:0)
要存储原始json对象/数组,您要做的就是在服务器端的Pojo和/或DTO级别中将类型声明为“对象”。
“ Object”类型也将与Spring Data和MapStruct一起使用。
然后在客户端,您可以将json数据作为json数据发送。