用C提取字符串

卡西凯扬·普拉卡什(Karthikeyan Prakash)

下面是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;
卡西凯扬·普拉卡什(Karthikeyan Prakash)

这是用于接收消息和进行比较的全功能实现。

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章