如何使用Spring Boot在Mongo中存储原始JSON

时间:2015-04-15 16:48:24

标签: json mongodb spring-boot

我想用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);
    }

}

5 个答案:

答案 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数据发送。