我正在尝试寻找一种用C解析JSON的好方法。我真的不需要庞大的库或任何东西,我宁愿拥有体积小,重量轻,功能最少的东西,但有很好的文档。
有人有什么可以指点我的吗?
我正在尝试寻找一种用C解析JSON的好方法。我真的不需要庞大的库或任何东西,我宁愿拥有体积小,重量轻,功能最少的东西,但有很好的文档。
有人有什么可以指点我的吗?
{
,[
,]
,}
,,
,"
,和反斜线。他们可能会或可能不会把Unicode转义序列交给您,他们可能会让您检查数字是否在允许的Unicode范围内,依此类推。然后,将任意JSON解析为树与将已知JSON解析为C之间有很大的不同结构。
Answers:
Json并不是一门强大的语言,因此它的库可能很小(至少比Xml库要小)。
在Json.org上有大量的C库链接。也许其中之一会很适合您。
Jsmn非常简单,只有两个功能可以使用。
/* Allows escaped symbol \uXXXX */
... case 'u':
.../* TODO */
NXJSON是功能齐全但很小(约400行代码)的JSON解析器,它具有易于使用的API:
const nx_json* json=nx_json_parse_utf8(code);
printf("hello=%s\n", nx_json_get(json, "hello")->text_value);
const nx_json* arr=nx_json_get(json, "my-array");
int i;
for (i=0; i<arr->length; i++) {
const nx_json* item=nx_json_item(arr, i);
printf("arr[%d]=(%d) %ld\n", i, (int)item->type, item->int_value);
}
nx_json_free(json);
你可以看看 詹森
该网站声明以下内容:Jansson是一个C库,用于编码,解码和处理JSON数据。它具有以下特点:
jsmn
由于它的速度[1],我很想使用它,但是它不支持编码。此外,Jansson确实非常易于使用。--- [1] translate.google.it/…–
您需要解析任意的JSON结构,还是仅解析特定于您的应用程序的数据。如果是后者,则无需生成将JSON键映射到值的任何哈希表/映射结构,就可以使其更加轻巧和高效。您可以直接将数据直接存储到struct字段中。