JSON
本节演示与JSON对象创建,修改,查询和删除操作相关的命令。
CreateObject
此命令用于从给定字符串创建JSON对象树。 如果输入字符串遵循有效的JSON格式,则会显示新对象树的句柄。 否则,该命令将返回错误。 显示的句柄应该用于此对象树上的其他操作。
如果字符串以“结尾”,则应在命令末尾添加额外空格,否则命令将引发错误。
用户必须通过在未使用时调用DeleteTree或DeleteAllObjects来释放为对象/树分配的内存。 不这样做会导致内存泄漏。
GetJsonString
此命令用于以字符串格式显示JSON对象/数组。 输入句柄应该是创建相应对象时返回的句柄。
Query
此命令用于搜索指定的JSON对象/数组,以查找具有指定键的项或指定索引处的项。 如果找到,则返回项的值,否则返回错误。
InsertValueByIndex
此命令用于在指定的JSON对象/数组中的指定索引处插入新项。
新项目字符串必须是JSON格式,如果它以“结尾”,则应在命令末尾添加额外空格,否则命令将引发错误。
此命令可用于JSON对象和数组。 但是,最好对JSON对象使用命令InsertKeyValueByIndex。
如果索引大于现有对象树/数组的长度,则在末尾附加该项。 此命令仅适用于嵌套结构的最外层。
InsertKeyValueByIndex
此命令用于在给定的JSON对象树中的给定索引处插入具有指定键和值的新项。 如果索引大于现有对象树/数组的长度,则在末尾附加该项。
值字符串必须是JSON格式的,如果它以“结束”,则应在命令末尾添加额外的空格,否则命令将引发错误。 密钥不需要任何格式。
此命令不能用于JSON数组。
该命令仅适用于嵌套结构的最外层。
ReplaceValueByIndex
此命令用于使用新值替换指定JSON对象树/ JSON数组中给定索引处的现有项的值。 如果索引大于现有对象树/数组的长度,则该命令返回错误。
新值字符串必须采用JSON格式,如果以“结尾”,则应在命令末尾添加额外空格,否则命令将引发错误。
如果用于JSON对象,则保留原始密钥字段。
该命令仅适用于嵌套结构的最外层。
DeleteEntryByIndex
此命令用于删除指定JSON对象/数组中给定索引处的项。 如果索引或句柄无效,该命令将返回错误。
DeleteEntryByKey
此命令用于删除指定JSON对象/数组中具有给定键的项,以查找具有指定键的项或指定索引处的项。 该命令返回错误句柄,如果找不到具有给定键的项,则该句柄无效。
如果重复键,则仅删除找到的第一个项目。
qapi_Status_t qapi_JSON_Decode(const char * input_String,uint32_t * handle)
将给定的JSON格式的字符串转换为JSON对象,并返回该对象的句柄。
此句柄将用于进一步的操作,例如查询,添加,删除和替换项目。
应用程序负责删除创建的对象。 如果不这样做会导致内存泄漏。 为此,请使用API qapi_JSON_Delete_Object()也可以看看
qapi_JSON_Delete_Object()qapi_JSON_Get_Handle_List()
返回值
QAPI_OK - JSON对象创建成功。
非零值 - JSON对象创建失败。
qapi_Status_t qapi_JSON_Encode(uint32_t handle,char ** output_String)
将给定的JSON对象转换为JSON格式的字符串。
应用程序必须传入要转换的对象的句柄和用于检索转换后的字符串的指针。 应用程序负责释放为新字符串分配的内存。 标准库“免费”功能可用于此目的。
返回值
QAPI_OK - JSON对象已成功转换为字符串。
非零值 - 无法将JSON对象转换为字符串。
qapi_Status_t qapi_JSON_Query_By_Key(uint32_t handle,const char * query_Key,char ** output_String)
查询指定对象中的指定键并返回该值。
在重复键的情况下,此API返回第一次出现。
应用程序必须传入指针以检索值。
返回值
QAPI_OK - 找到了指定的密钥。
非零值 - 未找到密钥。
qapi_Status_t qapi_JSON_Insert_Value_By_Index(uint32_t handle,uint32_t index,const char * value)
在给定数组中的给定索引处插入新项。
应用程序必须为值传递JSON格式的字符串。
返回值
QAPI_OK - 已删除指定的项目。
非零值 - 找不到具有指定键的项目。