# QNX JSON 库参考
2026/7/8 2:40:25 网站建设 项目流程

概述

libjson 库允许应用程序解码和编码 JSON 数据,用于读取和解释复杂数据或在系统之间传输数据。

库提供三大功能领域:

  • 解码器 (Decoder):读取 JSON 数据,导航对象和数组,读取和获取各个值的元数据
  • 编码器 (Encoder):以逐字段方式写入 JSON 数据,获取指向编码器中存储的 JSON 字符串的指针
  • 工具函数 (Utility):检索错误信息、清理内存、保存/恢复/重置状态、将格式化的 JSON 数据写入字符数组

第一部分:JSON 解码器 API

类型定义

类型描述
json_decoder_tJSON 解码器结构体
json_decoder_error_tJSON 解码器错误码
json_decoder_parse_error_tJSON 解码器解析错误码
json_decoder_state_tJSON 解码器状态
json_node_type_tJSON 解码器节点类型

支持的值类型:boolean、numeric(int, long long, double)、string。

生命周期函数

函数描述
json_decoder_create()创建新的 JSON 解码器实例
json_decoder_destroy()销毁 JSON 解码器实例
json_decoder_cleanup()清理 JSON 解码器实例,释放解码器树的内存
json_decoder_reset()重置 JSON 解码器实例

解析函数

函数描述
json_decoder_parse_file()解析 JSON 数据文件
json_decoder_parse_json_str()解析 JSON 数据字符串

导航函数

解码器以树结构存储数据,可通过推入/弹出对象和数组来导航。

函数描述
json_decoder_push_array()下降到数组中
json_decoder_push_object()下降到对象中
json_decoder_pop()从对象或数组中上升
json_decoder_next()移动到当前数组或对象中的下一个节点
json_decoder_previous()移动到当前数组或对象中的上一个节点
json_decoder_index()获取当前节点的索引
json_decoder_length()获取当前节点中的元素数量
json_decoder_name()获取当前属性的名称
json_decoder_position_index()移动到指定索引节点
json_decoder_position_property()定位到指定属性

值获取函数

函数描述
json_decoder_get_bool()获取 boolean 值
json_decoder_get_int()获取 integer 值
json_decoder_get_int_ll()获取long long
json_decoder_get_int_ull()获取unsigned long long
json_decoder_get_double()获取double
json_decoder_get_string()获取 string 值
json_decoder_type()获取节点类型
json_decoder_get_offset()获取节点值在原始 JSON 字符串中的偏移量

类型检查函数

函数描述
json_decoder_is_integer()判断节点是否表示整数值
json_decoder_is_unsigned()判断节点是否表示无符号整数值

状态函数

函数描述
json_decoder_get_state()获取解码器当前状态
json_decoder_set_state()设置解码器状态
json_decoder_get_status()获取解码器错误状态
json_decoder_set_status()设置解码器错误状态
json_decoder_free_state()释放之前保存的解码器状态
json_decoder_get_parse_error()获取解析错误的位置和原因

数据版本控制

函数描述
json_decoder_get_data_version()获取解码器当前数据版本
json_decoder_set_data_version()设置解码器数据版本

修改函数

函数描述
json_decoder_get_encoder()返回用于在解码器树中添加或更新节点的编码器实例
json_decoder_remove_node()从解码器树中移除节点

调试

函数描述
json_decoder_dump_tree()转储 JSON 解码器的树内容

第二部分:JSON 编码器 API

类型定义

类型描述
json_encoder_tJSON 编码器结构体
json_encoder_error_tJSON 编码器错误码
json_encoder_format_tJSON 编码器数据格式码
json_encoder_option_t控制 JSON 编码行为的选项
json_encoder_state_tJSON 编码器状态

支持的值类型:null、boolean、numeric(int, long long, double)、string(C-string 和 JSON 编码字符串)。

生命周期函数

函数描述
json_encoder_create()创建新的 JSON 编码器实例
json_encoder_destroy()销毁 JSON 编码器实例
json_encoder_cleanup()清理 JSON 编码器实例并释放关联内存
json_encoder_reset()重置 JSON 编码器实例

复合对象函数

函数描述
json_encoder_start_array()在编码器中开始新数组
json_encoder_end_array()结束当前数组
json_encoder_start_object()开始新对象
json_encoder_end_object()结束当前对象

值添加函数

函数描述
json_encoder_add_null()添加 null 值
json_encoder_add_bool()添加 boolean 值
json_encoder_add_int()添加 integer 值
json_encoder_add_int_ll()添加long long
json_encoder_add_int_ull()添加unsigned long long
json_encoder_add_double()添加 double 值
json_encoder_add_string()添加 string 值
json_encoder_add_json()添加 JSON 编码的字符串值
json_encoder_add_property_name()创建属性名称
json_encoder_add_from_decoder()从 JSON 解码器添加项目
json_encoder_add_whitespace()在下个名称/值之前添加空白字符

缓冲区和状态函数

函数描述
json_encoder_access_buffer()获取编码器数据缓冲区的读写指针
json_encoder_buffer()获取编码器数据缓冲区的只读指针
json_encoder_length()获取编码器当前数据长度
json_encoder_nesting_level()获取当前嵌套级别
json_encoder_reserve_space()在缓冲区中预留指定字节数的空间

选项和格式

函数描述
json_encoder_set_option()设置编码器选项
json_encoder_clear_option()清除编码器选项
json_encoder_set_format()设置编码器格式

状态管理

函数描述
json_encoder_get_state()获取编码器当前状态
json_encoder_set_state()设置编码器状态
json_encoder_get_status()获取编码器错误状态
json_encoder_set_status()设置编码器错误状态

第三部分:工具函数

这些函数将格式化的 JSON 数据写入输出字符串,类似于snprintf()系列函数。对于简单用例,比使用完整编码器需要更少代码,并按 JSON 规范自动处理特殊字符(如换行符和双引号)。

函数描述
jsnprintf()将 JSON 数据写入字符数组(最多指定字符数)
vjsnprintf()将 JSON 数据写入字符数组(varargs 版本)

相关参考

  • C 库参考 — 标准 C 库函数
  • QNX Helpers 开发者指南 — 字符串转换辅助函数

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询