欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 將json字符串轉換對象

傅智翔1年前10瀏覽0評論

JSON是一種輕量級的數據交互格式,近年來被廣泛應用。在C語言中,經常需要將JSON字符串轉換成對象。下面我們來講一下如何使用C語言進行JSON字符串的轉換。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <jansson.h>
int main()
{
char *json_string = "{ \"name\": \"Tom\", \"age\": 18 }";
json_t *root;
json_error_t error;
const char *name;
int age;
root = json_loads(json_string, 0, &error);
if (!root)
{
fprintf(stderr, "error: on line %d: %s\n", error.line, error.text);
return 1;
}
if (!json_is_object(root))
{
fprintf(stderr, "error: root is not an object\n");
json_decref(root);
return 1;
}
json_t *json_name = json_object_get(root, "name");
if (!json_name)
{
fprintf(stderr, "error: name not found\n");
json_decref(root);
return 1;
}
if (!json_is_string(json_name))
{
fprintf(stderr, "error: name is not a string\n");
json_decref(root);
return 1;
}
name = json_string_value(json_name);
json_t *json_age = json_object_get(root, "age");
if (!json_age)
{
fprintf(stderr, "error: age not found\n");
json_decref(root);
return 1;
}
if (!json_is_integer(json_age))
{
fprintf(stderr, "error: age is not an integer\n");
json_decref(root);
return 1;
}
age = json_integer_value(json_age);
printf("name:%s age:%d\n", name, age);
json_decref(root);
return 0;
}

上面的代碼中,首先定義了一個JSON格式的字符串,并創建一個json_t對象。然后調用json_loads()方法將json格式的字符串轉成json_t對象,同時會檢測JSON格式是否正確,如果不正確輸出錯誤信息。之后使用json_object_get()方法從json_t對象中獲取指定的key的值,并驗證該key是否存在以及值的類型是否正確。最后使用json_string_value()或json_integer_value()獲取相應的值,并打印出來。最后別忘了將json對象進行釋放。