【发布时间】:2023-03-30 11:53:01
【问题描述】:
我需要在没有外部库的情况下手动解析来自服务器的JSON 消息,位于C language。
来自服务器的消息如下:
{[CR+LF]
"Tmg": "R",[CR+LF]
"STP": 72[CR+LF]
}[CR+LF]
或
{[CR+LF]
"Tmg": "R",[CR+LF]
"STP": 150[CR+LF]
}[CR+LF]
我需要STP: 后面的号码。每个消息结构中的数字都不同,因此我需要从 JSON 结构中获取该数字。我不能使用外部库,因为此代码在嵌入式系统中,并且不允许使用外部代码。
我尝试了以下方法:
int main (){
const char response_message[35] = "{\r\n\"Tmg\":\"R\",\r\n\"STP\":72,\r\n}";
const char needle[8] = "P\":";
char *ret;
ret = strstr(response_message, needle);
printf("The number is: %s\n", ret);
return 0;
}
但显然,我得到了这个结果:
The number is: P":72,
}
所以我只需要得到号码,我怎样才能得到这个?
谢谢
【问题讨论】:
-
太宽泛了!堆栈溢出不是我的工作!你可以使用
strtok() -
您可以使用正则表达式来定义一些字符串模式并从该模式中获取特定信息。请探索 C 语言的正则表达式库。