Tiny-JSON은 C로 작성된 다목적이며 사용하기 쉽고 내장 시스템에 적합합니다. 빠르고 강력하며 휴대용입니다.
그것은 토큰 화제 일뿐입니다. 성능 손실없이 C 유형 변수로 직접 JSON 데이터에 문자열 데이터에 액세스하거나 원시 값을 직접 얻을 수 있습니다.
JSON 필드에 일대일로 액세스하거나 이름으로 값을 얻을 수 있습니다. 이를 통해 많은 소스 코드 라인과 개발 시간을 절약 할 수 있습니다.
JSON 문자열을 만들어야하는 경우 https://github.com/rafagafe/json-maker를 방문하십시오.
JSON 텍스트 문자열을 구문 분석 할 때 JSON_T 구조를 연결하여 트리가 생성됩니다. 제공된 API를 사용 하여이 트리를 탐색하거나 쿼리하는 것은 매우 쉽습니다.
감소 된 메모리 사용량을 유지하고 빠른 처리를 위해 문자열이 복사되지 않습니다. JSON 요소의 값을 요청하면 원래 JSON 문자열에 대한 참조가 반환됩니다.
데이터의 처리를 용이하게하기 위해 반환 된 문자열은 무효가 종결된다. 이것은 널 캐릭터를 쉼표, 괄호, 버팀대 및 따옴표와 같은 JSON 제어 문자로 설정하여 달성됩니다.
Tiny-JSON API는 두 가지 유형을 제공합니다. jsonType_t 는 가능한 모든 JSON 필드 유형에 대한 열거입니다. json_t 알 필요가없는 내부 데이터를 포함하는 구조입니다.
typedef enum {
JSON_OBJ , JSON_ARRAY , JSON_TEXT , JSON_BOOLEAN ,
JSON_INTEGER , JSON_REAL , JSON_NULL
} jsonType_t ; JSON 문자열을 구문 분석하려면 json_create() 사용하십시오. JSON 필드를 할당하기 위해 json_t 배열을 전달합니다. JSON 문자열이 형식이 잘못되거나 배열보다 더 많은 필드가있는 경우이 함수는 NULL 포인터를 반환합니다.
enum { MAX_FIELDS = 4 };
json_t pool [ MAX_FIELDS ];
char str [] = "{ "name": "peter", "age": 32 }" ;
json_t const * parent = json_create ( str , pool , MAX_FIELDS );
if ( parent == NULL ) return EXIT_FAILURE ; 이름으로 필드를 얻으려면 json_getProperty() 사용합니다. 필드가 존재하지 않으면 함수는 널 포인터를 반환합니다. 필드의 유형을 얻기 위해 json_getType() 사용합니다.
json_t const * namefield = json_getProperty ( parent , "name" );
if ( namefield == NULL ) return EXIT_FAILURE ;
if ( json_getType ( namefield ) != JSON_TEXT ) return EXIT_FAILURE ; 필드 값을 문자열 형식으로 얻으려면 json_getValue() 사용합니다. 항상 유효한 널 임계 문자열을 반환합니다.
char const * namevalue = json_getValue ( namefield );
printf ( "%s%s%s" , "Name: '" , namevalue , "'.n" ); 원시 필드의 경우 특정 함수를 사용하여 필드 값을 C 유형으로 직접 가져 오거나 json_getInteger() 사용하거나 json_getValue() 사용하여 텍스트 형식으로 값을 얻을 수 있습니다.
json_t const * agefield = json_getProperty ( parent , "age" );
if ( agefield == NULL ) return EXIT_FAILURE ;
if ( json_getType ( agefield ) != JSON_INTEGER ) return EXIT_FAILURE ;
int64_t agevalue = json_getInteger ( agefield );
printf ( "%s%lld%s" , "Age: '" , agevalue , "'.n" );
char const * agetxt = json_getValue ( agefield );
printf ( "%s%s%s" , "Age: '" , agetxt , "'.n" );중첩 된 JSON 객체 및 어레이를 사용하는 방법은 example-01.c를 참조하십시오.