BSON 문서 만들기
bson_t 구조
BSON 문서는 bson_t 를 사용하여 생성됩니다. 구조입니다. 이 구조는 BSON 사양 을 사용하여 인코딩에 필요한 로직을 캡슐화합니다. . 핵심은bson_t 버퍼 관리자이자 인코딩 루틴 설정하다 입니다.
팁
BSON 문서는 소비자의 성능 요구 사항이나 선호도에 따라 스택 또는 힙에 상주할 수 있습니다.
먼저 스택에 새 BSON 문서를 생성해 보겠습니다. libbson을 사용할 때마다 #include <bson/bson.h>
을(를) 확인하세요.
bson_t b; bson_init (&b);
그러면 빈 문서가 생성됩니다. JSON에서 이는 {}
과 동일합니다.
이제 BSON 문서 에 항목을 추가할 수 있습니다. 추가하려는 필드 유형에 따라 bson_append_
접두사가 붙은 다양한 함수를 사용할 수 있습니다. UTF-8 로 인코딩된 string 을 추가해 보겠습니다.
bson_append_utf8 (&b, "key", -1, "value", -1);
두 개의 -1
매개변수를 확인하세요. 첫 번째는 key
의 길이(바이트)가 strlen()
로 결정되어야 함을 나타냅니다. 또는 숫자 3
을 전달했을 수도 있습니다. 두 번째 -1
도 마찬가지이지만 value
도 마찬가지입니다.
Libbson은 string 리터럴을 사용할 때 번거로운 작업을 줄일 수 있도록 매크로를 제공합니다. 다음 두 추가 항목은 동일합니다.
bson_append_utf8 (&b, "key", -1, "value", -1); BSON_APPEND_UTF8 (&b, "key", "value");
이제 BSON 문서 에 몇 가지 서로 다른 필드 유형을 추가하는 예시 를 살펴보겠습니다.
bson_t b = BSON_INITIALIZER; BSON_APPEND_INT32 (&b, "a", 1); BSON_APPEND_UTF8 (&b, "hello", "world"); BSON_APPEND_BOOL (&b, "bool", true);
bson_init 에 대한 호출을 생략했습니다. . BSON_INITIALIZER
를 지정하면 구조를 기본 상태 로 제거 할 필요가 없습니다.
하위 문서 및 하위 배열
하위 문서 생성을 간소화하려면 bson_append_document_begin 상위 문서의 메모리 리전 을 대상 버퍼로 사용하여 하위 문서를 빌드 하는 데 사용할 수 있습니다.
bson_t parent = BSON_INITIALIZER; bson_t child; bson_append_document_begin (&parent, "foo", 3, &child); bson_append_int32 (&child, "baz", 3, 1); bson_append_document_end (&parent, &child); char *str = bson_as_relaxed_extended_json (&parent, NULL); printf ("%s\n", str); // Prints: { "foo" : { "baz" : 1 } } bson_free (str); bson_destroy (&parent);
하위 배열 생성을 간소화하려면 bson_array_builder_t 부모의 메모리 리전 을 대상 버퍼로 사용하여 하위 배열을 빌드 하는 데 사용할 수 있습니다.
bson_t parent = BSON_INITIALIZER; bson_array_builder_t *bab; bson_append_array_builder_begin (&parent, "foo", 3, &bab); bson_array_builder_append_int32 (bab, 9); bson_array_builder_append_int32 (bab, 8); bson_array_builder_append_int32 (bab, 7); bson_append_array_builder_end (&parent, bab); char *str = bson_as_relaxed_extended_json (&parent, NULL); printf ("%s\n", str); // Prints: { "foo" : [ 9, 8, 7 ] } bson_free (str); bson_destroy (&parent);
간소화된 BSON C 객체 표기법
BSON 문서를 수작업으로 생성하는 것은 지루하고 시간이 많이 소요될 수 있습니다. 대상 형식에 더 가까운 형식으로 BSON 문서를 생성할 수 있도록 BCON 또는 BSON C 객체 표기법이 추가되었습니다.
다음 예제에서는 BCON을 사용하는 방법을 보여 줍니다. 필드 값은 BCON_*
매크로로 래핑됩니다. 이는 가변형 프로세서가 매개변수 유형을 결정하는 데 필요합니다.
bson_t *doc; doc = BCON_NEW ("foo", "{", "int", BCON_INT32 (1), "array", "[", BCON_INT32 (100), "{", "sub", BCON_UTF8 ("value"), "}", "]", "}");
다음 문서 를 생성합니다.
{ "foo" : { "int" : 1, "array" : [ 100, { "sub" : "value" } ] } }