主题中讨论的其他器件: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)