簡體   English   中英

使用YAJL解析JSON數組

[英]Parse a JSON array with YAJL

我正在嘗試解析JSON文件中的數組,像這樣

{
    "val": [5,6]
}

使用以下代碼(改編自該parse_config.c隨附的parse_config.c

char errbuf[1024];
yajl_val node;

long length;
char *file_data = read_file(&length, "conf.json");

node = yajl_tree_parse((const char *) file_data, errbuf, sizeof(errbuf));

const char *path[] = {"val", (const char *) 0};
yajl_val v = yajl_tree_get(node, path, yajl_t_number);

if (v)
    printf("Node found.\n");
else
    printf("Can't find node %s\n", path[0]);

yajl_tree_free(node);
free(file_data);

此方法對於單個值成功,例如

{
    "val": 5
}

(成功是指填充vNode found. ),但不包含數組。 對於要解析的數組,我需要做些什么?

謝謝。

  • 您可以使用YAJL_IS_ARRAY來檢查v是數組true還是false。 如果v是一個數組,它將返回true。 如果v不是數組,它將返回false。
  • 接下來,您可以使用以下代碼對其進行解析:

     size_t len = v->u.array.len; int i; for ( i = 0; i < len; ++i ) { // get ref to one object in array at a time yajl_val obj = v->u.array.values[ i ]; // object if(YAJL_IS_DOUBLE(obj)){ printf( "%s/%f ", key, obj->u.number.d ); } } 
  • 有關詳細信息,您可以在這里看到: 使用YAJL解析C中的復雜JSON子對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM