我从Wi-Fi模块收到大量文字。
哪个保存在我的响应缓冲区中。
char wifiResponseBuffer[500];
内容如下:
AT+CIPSEND=84
> GET http://api.noteu.co.uk/v1/poll/get/?seria
SEND OK
+IPD,308:{"data":[{"line1":" Facebook Note ","line2":"Nathan Weighill also","line3":" commented on Harry ","line4":" Bailey's photo.","beep":1,"received_time":1424976639},{"line1":" Gmail Message ","line2":"","line3":"Noteu Error","line4":"","beep":1,"received_time":1424976640}],"summary":{"note_count":2}}
OK
OK
Unlink
我有一个JSON解析器库但是需要在解析之前从响应中提取实际的JSON文本。这是第一次出现{
并且最后一次出现}
。
我可以在C中使用哪些字符串函数组合来查找这些字符的索引,然后提取JSON文本。
非常感谢任何帮助,
杰克
答案 0 :(得分:0)
strchr
用于查找字符串中第一次出现的字符。 strrchr
找到了最后一个。
以下是如何使用这些内容的简短示例:
int test(void)
{
char wifiResponseBuffer[500];
int wifi_len;
// get the WiFi data, leaving 1 byte for a NUL terminator
wifi_len = get_wifi_response(wifiResponseBuffer, sizeof(wifiResponseBuffer)-1);
if (wifi_len < 0)
return -1; // error
// NUL-terminate to use with strxxx functions
wifiResponseBuffer[wifi_len] = '\0';
// Find start of JSON data
const char *json_start = strchr(wifiResponseBuffer, '{');
if (json_start == NULL)
return -1;
json_start++; // advance past {
// Find end of JSON data
const char *json_end = strchr(json_start, '}');
if (json_end == NULL)
return -1;
// Pass the JSON data to the library
size_t json_len = json_end - json_start;
do_something_with_json_data(json_start, json_len);
}