Мне нужно проанализировать вручную, без внешних библиотек, сообщение 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,
}
Итак, мне нужно получить только номер, как я могу это получить?
Благодарность
1 ответ
Можно использовать взломанное решение. Используйте strstr (), чтобы найти "STP": затем найдите следующее, или} и извлеките цифры между ними.
И это взлом. Не гарантируется работа. Для чего-то, что гарантированно работает, вы используете парсер JSON.
Похожие вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.
strtok()