在ANSI C中解析JSON

时间:2012-05-20 15:05:38

标签: c json

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

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

我知道有Crockford's List of JSON libraries,但我不太确定哪一个最适合所述问题。

2 个答案:

答案 0 :(得分:19)

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

  

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

     

jsmn是个不错的选择,因为:

     
      
  • 它与C89编译器版本
  • 兼容   
  • 它不使用动态内存分配
  •   
  • 它具有最小的开销
  •   
  • 它只需要一次传递来解析JSON数据
  •   
  • 它没有依赖关系,甚至是libc
  •   
  • 它是在MIT许可下分发的,因此您可以在专有项目中使用它
  •   

答案 1 :(得分:3)

尝试使用json-c是最常见的一种,它是开源的,也适用于Windows(Win32)。

  

JSON-C实现了一个允许您使用的引用计数对象模型   在C中轻松构造JSON对象,将它们输出为JSON格式   字符串并将JSON格式化的字符串解析回C语言   JSON对象的表示。