c-Json字符串标识结束



Json字符串:"{\n\t"标记":"值",\n\t"属性":{\n\t\t"rfid":"2"\n\t},\n\t";dat":"1〃;\n}

我正在从web服务器逐部分接收Json字符串,即每次8字节

当我试图用C 中的以下逻辑在一个缓冲区中收集数据时

static char *jsonString ;
bool found_json = false;
jsonString = (char*)malloc (1024, sizeof(char));
while(data[i] != "}")
{
found_json = true;
for( i = 0; i< len; i++)
{
memcpy(jsonString, data, len);
}       

}

有一天可以揭示如何检测Json字符串的末尾,因为将有两个关闭的Json对象

我认为有两种正确的方法:要么完全解析JSON(可以使用一些库(,要么以某种方式接收字符串的长度(如果这是HTTP请求,那么应该有指示长度的Content-Length头(。像大括号之类的事情是不可靠的,因为即使是像1233这样的简单数字或像true这样的布尔值也是有效的JSON字符串。

以下是一些用于查找字符串末尾的伪代码:

open = 0;
close = 0;
while ( visit each character in your buffer )
{
if (new character == '{')
open++;
else if (new character == '}')
close++;
if (open == 0) // Did we even start the JSON string yet?
discard character
else if (open == close) // Matching number of { and } found. We are done.
{
process JSON string
open = close = 0; // Prepare for next incoming JSON string.
}
}

最新更新