在ANSI C中解析JSON

art*_*oex 17 c json

我想将JSON编码的数据读入C结构.json数据的结构是事先已知的,相对平坦并且被一些C struct typedef模仿.第三级左右的数组包含一个非常冗长的JSON对象列表,必须一次处理一个.

该代码旨在在非常有限的系统上运行,因此库不应动态分配内存.

我知道有Crockford的JSON库列表,但我不太确定哪一个最适合所述问题.

小智 20

尝试jsmn lib,我喜欢它可以解析任何只有两个malloc的json文件.

jsmn是一个用于解析JSON数据格式的简约库.它可以很容易地用在小型项目中,也可以集成到嵌入式系统中.

jsmn是一个不错的选择,因为:
- 它与C98兼容
- 它不使用动态内存分配
- 它具有最小的可能开销
- 它只需要一次传递来解析JSON数据
- 它没有依赖关系,甚至是libc
- 它是分布式的根据MIT许可,您可以在专有项目中使用它

  • jsmn甚至不需要mallocs,因为你可以声明数组,但缺点是如果你想要解析一些非常大的东西或者事先不知道大小那么你可能最终不得不分配或重新分配更多的内存. (2认同)
  • @hippietrail 这个缺点是使用 `C` 而不是 `jsmn` 的结果。 (2认同)

ale*_*oot 3

Try with json-c是最常见的方法之一,它是开源的,也可以在 Windows (Win32) 上运行。

JSON-C 实现了引用计数对象模型,使您可以轻松地用 C 语言构造 JSON 对象,将它们输出为 JSON 格式的字符串,并将 JSON 格式的字符串解析回 JSON 对象的 C 表示形式。