下面是JSMN库的实现。在传入的JSON消息中搜索“ command”,“ rf_type”和“ Filter”的位置。现在,程序将自动打印提取的字符串。我需要将其传递给另一个变量,并在另一个函数中使用字符串。
开始->从JSON提取命令->传递到另一个函数->结束
在这种情况下,任何人都可以指导如何将打印的字符串转换为变量
printf("===============================\n");
for (i = 1; i < r; i++) {
if (jsoneq(JSON_STRING, &t[i], "command") == 0)
{
printf("- command: %.*s\n", t[i+1].end-t[i+1].start,
JSON_STRING + t[i+1].start);
i++;
}
else if (jsoneq(JSON_STRING, &t[i], "rf_type") == 0)
{
printf("- rf_type: %.*s\n", t[i+1].end-t[i+1].start,
JSON_STRING + t[i+1].start);
i++;
}
else if (jsoneq(JSON_STRING, &t[i], "filter") == 0)
{
printf("- filter: %.*s\n", t[i+1].end-t[i+1].start,
JSON_STRING + t[i+1].start);
i++;
}
else
{
printf("Unexpected messages HUB_HCI: %.*s\n", t[i].end-t[i].start,
JSON_STRING + t[i].start);
}
}
return 1;
这是用于接收消息和进行比较的全功能实现。
int msgarrvd(void *context, char *topicName, int topicLen,MQTTClient_message *message)
{
int i;
char* payloadptr;
char *test[256];
printf("Message arrived\n");
printf("topic: %s\n", topicName);
printf("===============================\n");
payloadptr = message->payload;
for(i=0; i<message->payloadlen; i++)
{
JSON_STRING[i]=*payloadptr++;
//putchar(*payloadptr++);
printf("%c", JSON_STRING[i]);
}
putchar('\n');
MQTTClient_freeMessage(&message);
MQTTClient_free(topicName);
jsmn_init(&p);
r = jsmn_parse(&p, JSON_STRING, strlen(JSON_STRING), t, sizeof(t)/sizeof(t[0]));
if (r < 0) {
printf("Failed to parse JSON: %d\n", r);
}
if (r < 1 || t[0].type != JSMN_OBJECT) {
printf("Not Valid JSON-HCI_HUB\n");
}
printf("===============================\n");
for (i = 1; i < r; i++) {
if (jsoneq(JSON_STRING, &t[i], "command") == 0)
{
printf("- command: %.*s\n", t[i+1].end-t[i+1].start,
JSON_STRING + t[i+1].start);
test[256]=t[i+1].end-t[i+1].start,JSON_STRING + t[i+1].start;
printf("%s\n",&test);
i++;
}
else if (jsoneq(JSON_STRING, &t[i], "rf_type") == 0)
{
printf("- rf_type: %.*s\n", t[i+1].end-t[i+1].start,
JSON_STRING + t[i+1].start);
i++;
}
else if (jsoneq(JSON_STRING, &t[i], "filter") == 0)
{
printf("- filter: %.*s\n", t[i+1].end-t[i+1].start,
JSON_STRING + t[i+1].start);
i++;
}
else
{
printf("Unexpected messages HUB_HCI: %.*s\n", t[i].end-t[i].start,
JSON_STRING + t[i].start);
}
}
return 1;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句