YAJL을 통해 json 문 생성
3313 단어 json
가령 다른 유형을 추가해야 한다고 가정하면 yajl의 수첩을 조사하고 다른 함수를 호출하여 가입할 수 있다.
/*
* yajl json 。
* , 。
*/
#include <yajl/yajl_gen.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#define USE_MAP 1
#define BEAUTIFY_OUTPUT 1
typedef struct yajl_info_t
{
int depth;
yajl_gen gen; // generator
} yajl_info;
/*
* begin_map end_map
* , /
*/
yajl_gen_status begin_map(void *ctx)
{
yajl_info *info = (yajl_info *)ctx;
yajl_gen_status __stat = yajl_gen_map_open(info->gen);
if (__stat == yajl_gen_status_ok) {
info->depth++ ;
} else {
printf("yajl_gen_map_open failed
");
}
return __stat;
}
/*
* begin_map end_map
* ,
*/
yajl_gen_status begin_array(void *ctx)
{
yajl_info *info = (yajl_info *)ctx;
yajl_gen_status __stat = yajl_gen_array_open(info->gen);
if (__stat == yajl_gen_status_ok) {
info->depth++;
} else {
printf("yajl_gen_array_open failed
");
}
return __stat;
}
yajl_gen_status end_array(void *ctx)
{
yajl_info *info = (yajl_info *)ctx;
yajl_gen_status __stat = yajl_gen_array_close(info->gen);
if (__stat == yajl_gen_status_ok) {
info->depth--;
}
return __stat;
}
int yajl_init(yajl_info *info) {
info->depth = 0;
info->gen = yajl_gen_alloc(NULL);
#ifdef BEAUTIFY_OUTPUT
//
yajl_gen_config(info->gen, yajl_gen_beautify, 1);
#endif
}
int yajl_free(yajl_info *info) {
info->depth = 0;
yajl_gen_free(info->gen);
}
int main(int argc, char **argv)
{
yajl_info yajlinfo;
yajl_init (&yajlinfo);
const unsigned char* buf;
size_t buflen;
int i;
#ifdef USE_MAP
//
begin_map(&yajlinfo);
#else
//
begin_array(&yajlinfo);
#endif
// /
unsigned char *key = "scutech";
unsigned char *value = "dingjia";
int keylen = strlen(key);
int valuelen = strlen(value);
yajl_gen_string(yajlinfo.gen, (const unsigned char*)key, keylen);
yajl_gen_string(yajlinfo.gen, (const unsigned char*)value, valuelen);
for(i=1;i<5;i++) {
unsigned char key1[50];
unsigned char value1[50];
sprintf(key1, "scutech%d", i);
sprintf(value1, "dingjia%d", i);
int keylen1 = strlen(key1);
int valuelen1 = strlen(value1);
//
begin_map(&yajlinfo);
yajl_gen_string(yajlinfo.gen, (const unsigned char*)key1, keylen1);
yajl_gen_string(yajlinfo.gen, (const unsigned char*)value1, valuelen1);
end_map(&yajlinfo);
}
#ifdef USE_MAP
end_map(&yajlinfo);
#else
end_array(&yajlinfo);
#endif
// json , buf , buflen
yajl_gen_get_buf(yajlinfo.gen, &buf, &buflen);
printf("%s
", buf);
yajl_free(&yajlinfo);
return 0;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콘텐츠 SaaS | JSON 스키마 양식 빌더Bloomreach Content를 위한 JSON Form Builder 맞춤형 통합을 개발합니다. 최근 Bloomreach Content SaaS는 내장 앱 프레임워크를 사용하여 혁신적인 콘텐츠 유형 필드를 구축할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.