it-source

JSON 문자열에서 BSON 개체를 만드는 중

criticalcode 2023. 4. 1. 09:34
반응형

JSON 문자열에서 BSON 개체를 만드는 중

외부 앱에서 데이터를 가져오는 자바 앱이 있습니다.착신 JSON은 Strings에 있습니다.그 Strings를 해석하여 BSON 오브젝트를 만들고 싶습니다.

유감스럽게도 Java의 BSON 구현에서는 API를 찾을 수 없습니다.

GSON과 같은 외부 파서를 사용해야 하나요?

또, 3.0.0 이후에서는, 다음의 조작이 가능하게 됩니다.

import org.bson.Document;

final Document doc = new Document("myKey", "myValue");
final String jsonString = doc.toJson();
final Document doc = Document.parse(jsonString);

공식 문서:

공식 MongoDB Java Driver에는 JSON을 BSON으로 해석하고 BSON을 JSON으로 시리얼화하기 위한 유틸리티 방법이 포함되어 있습니다.

import com.mongodb.DBObject;
import com.mongodb.util.JSON;

DBObject dbObj = ... ;
String json = JSON.serialize( dbObj );
DBObject bson = ( DBObject ) JSON.parse( json );

드라이버는, https://mongodb.github.io/mongo-java-driver/ 를 참조해 주세요.

사용하다Document.parse(String json)부터org.bson.Document. 다시 돌아오다Document유형인 물체Bson.

가장 쉬운 방법은 JSON 라이브러리를 사용하여 JSON 문자열을 해석하여Map그런 다음 이러한 값을 1개의 코드에 삽입하는 방법을 사용합니다.BSONObject.

답변은 Jackson을 사용하여 JSON 문자열을 해석하는 방법을 보여 줍니다.Map.

문자열 json을 bson으로 변환하려면 다음 작업을 수행합니다.

import org.bson.BasicBSONEncoder;
import org.bson.BSONObject;

BSONObject bson = (BSONObject)com.mongodb.util.JSON.parse(string_json);
BasicBSONEncoder encoder = new BasicBSONEncoder();
byte[] bson_byte = encoder.encode(bson);

bson을 json으로 변환하려면 다음 작업을 수행합니다.

import org.bson.BasicBSONDecoder;
import org.bson.BSONObject;

BasicBSONDecoder decoder = new BasicBSONDecoder();
BSONObject bsonObject = decoder.readObject(out);
String json_string = bsonObject.toString();

잭슨 데이터 바인딩을 사용하여 BSON(BSON에서 POJO를 만들고 BSON으로 쓰기)과 작업할 수 있는 bson4jackson 프로젝트에 관심이 있을 수 있습니다.특히 잭슨도 JSON과 함께 작업하기 때문입니다.따라서 말씀하신 대로 변환할 수 있습니다.다른 ObjectMapper instance(JSON에서 동작하는 인스턴스, BSON에서 동작하는 인스턴스)를 사용하면 됩니다.

Jackson을 사용하면 전체 POJO(원하는 선언 구조) 또는 간단한 지도, 목록 등을 사용할 수 있습니다.데이터를 읽을 때 바인딩할 대상을 선언하기만 하면 됩니다(쓰기할 때 유형은 전달한 개체에 의해 정의됩니다).

질문에 대한 답변은 BSON에서 JSON으로 변환된 https://github.com/mongodb/mongo/blob/master/src/mongo/db/jsobj.cpp의 소스 코드를 참조하십시오.

기본적으로는...

  • ObjectId("XXX")->{ "$oid" : "XXX" }
  • /XXX/gi->{ "$regex" : "XXX", "$options" : "gi" }

기타 등등...

Basic DBObject의 toJson() 메서드와 parse(String) 메서드를 사용하는 것이 좋습니다.JSON 유틸리티 클래스는 @Depricated이기 때문입니다.

import com.mongodb.BasicDBObject;

public static BasicDBObject makeBsonObject(String json) {
    return BasicDBObject.parse(json);
}

public static String makeJsonObject(BasicDBObject dbObj) {
    return dbObj.toJson();
}

java는 잘 모르겠지만 mongoDB CPP 드라이버는 함수 타입이 있습니다.

BSONObj fromjjson(문자열)

전달된 문자열에 따라 BSONObj를 반환합니다.자바에서도 같은 기능이 있을 겁니다.

언급URL : https://stackoverflow.com/questions/3117167/creating-bson-object-from-json-string

반응형