This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2642R:CC26x2 SDK 4.40.4.04的 ti/utils 上的 JSON 库。 使用空值解析错误

Guru**** 2589275 points
Other Parts Discussed in Thread: CC2640

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/999112/cc2642r-json-library-on-ti-utils-of-the-cc26x2-sdk-4-40-4-04-incorrect-parsing-with-null-values

器件型号:CC2642R
主题中讨论的其他器件:CC2640

尊敬的 TI 支持:

在解析 jsons 时、其中一个值为空、随后的值都将被取消。 我认为这是库中的一个错误、可能同样适用于该系列的其他 SDK。 我在论坛或5.xx 版 SDK 或 CC2640 SDK 等的发行说明中未发现提及这一点...

要查看该问题、只需解析 json、然后将其构建回文本、如下两个示例所示:

输入:{"key1":[null、"value12"、"value13"]、"key3":"value3"、"key4":"value4"、 "key5":"value5"}
输出:{"key1":[null、null、null ] 、"key3":"value3"、"key4":"value4"}

输入:{"key1":["value11"、"value12"、"value13"]、"key2":null、"key3":"value3"、 "key4":"value4"、"key5":"value5"}
输出:{"key1":["value11"、"value12"、"value13"]、"key2":null、"key3":null、"key4":null}

如您所见、在第一种情况下、数组中的值在输出中变为无效、而在第二种情况下、位于 key2之后的变量也变为无效。

尝试使用 JSON_getValue 函数也会显示该值为空。

使用以下代码片段处理输入/输出:

#define template\ 
   "{"\
   "\"key1\":[string]、"\
   "\"key2\":string、"\
   "\"key3\":string、"\
   "\"key4\":string、"\
   "}"

char text[512];//使用正确转义的测试字符串填充此缓冲区*/
INT max = 512;
json_handle jsonTemplate;
json_handle jsonObject;


RetVal = JSON_createTemplate (&jsonTemplate、template、strlen (template));
RetVal = JSON_CreateObject (&jsonObject、jsonTemplate、0);
RetVal = JSON_parse (jsonObject、text、strlen (text));
RetVal = JSON_BUILD (jsonObject、text、&max);

所有函数调用的返回值始终为0 (JSON_RC_OK)