programing

몽고에서 Spring Boot을 사용하여 생 JSON을 저장하는 방법

lovejava 2023. 9. 26. 19:13

몽고에서 Spring Boot을 사용하여 생 JSON을 저장하는 방법

JSON으로 HTTP PUT 요청을 받아서 몽고에 수정 없이 보관하고 싶습니다.이거 어떻게 해요?내가 가진 최선은 이것입니다.

@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);
    }

}

Mongodb의 최신 버전(mongo-java-driver 3.0+)에서는 API가 org.bson을 사용합니다.문서화하면 솔루션은 다음과 같습니다.

@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);
   }

}

가장 좋은 해결책은 아니지만, 이와 같은 것이 효과가 있을 것입니다. 컨트롤러를 임의의 문자열을 허용하도록 변경합니다.

... 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);

json-simple lib을 사용할 수 있으며 작고 우아한 json 객체를 가지고 있으며 모델 POJO에 사용하여 자동으로 mongo Object type으로 변환됩니다.

private JSONObject jsonSettings;

이것이 도움이 되는지 확신할 수 없습니다. 만약 당신이 당신의 문서에 지도를 작성하고 나중에 해시 지도에 "키-값" 쌍을 채우고 저장할 수 있는 옵션이 있다면요.예상대로 저장됩니다(JSON입니다).이것은 컴파일 시간 동안 키의 이름이나 값을 모를 때 도움이 될 것입니다.

raw j를 object/array에 저장하기 위해서는 유형을 Pojo 및/또는 서버측의 DTO 레벨에 "Object"로 선언하기만 하면 됩니다.
"Object" 유형은 Spring Data 및 MapStruct에서도 작동합니다.
그럼 고객측에서 json 데이터를 json 데이터로 보내주시면 됩니다.

언급URL : https://stackoverflow.com/questions/29656128/how-can-a-store-raw-json-in-mongo-using-spring-boot