我正在尝试寻找一种在C语言中解析JSON的好方法。我真的不需要一个庞大的库或其他什么东西,我宁愿使用一些小型且轻量级的工具,拥有最基本的功能,但文档要良好。
是否有人可以向我指出什么呢?
Json并不是一个庞大的语言,因此与之相关的库很可能比Xml库要小(至少如此)。
在Json.org上链接了许多C库。也许其中有一个适合你。
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);
jsmn
,但它不支持编码。此外,Jansson 真的很容易使用。 - Marco SullaJsmn非常精简,只有两个功能可供使用。
/* 允许转义符号 \uXXXX */
... case 'u':
... /* 待办事项 */
- hippietrail我在工作项目中使用了JSON-C,并推荐它。它轻量级且采用开放式许可发布。
文档包含在发行版中。您可以使用*_add
函数创建JSON对象,使用等效的*_put
函数释放它们的内存,并使用实用程序函数将类型转换并以字符串表示输出对象。
许可证允许将其包含在您的项目中。我们将其编译为静态库,并将其链接到主要构建中。这样,我们就不必担心依赖关系(除了安装Xcode之外)。
JSON-C还在OS X(x86 Intel)和Linux(x86 Intel)下成功构建。如果您的项目需要可移植性,这是一个很好的起点。
您需要解析任意的JSON结构,还是仅处理与您的应用程序相关的数据?如果是后者,您可以通过不生成映射JSON键值对的哈希表/映射结构,直接将数据存储到结构字段或其他位置,使它变得更加轻量高效。
{
、[
、]
、}
、,
、"
和反斜杠。他们可能会或可能不会将Unicode转义序列的转换留给您,他们可能要由您检查数字是否在允许的Unicode范围内等。然后,在将任意JSON解析为树与已知JSON解析为C结构之间存在重大差异。 - hippietrail