如何在C语言中使用sscanf解析json?

问题描述 投票:0回答:1

我有以下json格式的字符串。

{"num":1, "data":{"city": "delhi"}}。

我需要使用以下方法来获取 "num "键的值。sscanf. 这是我的尝试 我知道这是不正确的。但我不知道怎么做。

#include <stdio.h>
#include <stdlib.h>

int main(void) {

    char *str = "{\"num\":1,\"data\":{\"city\":\"delhi\"}}";
    char *ret = malloc(sizeof(char) * 10);

    sscanf(str, "{\"num\":%s, %s" , ret);

    printf("%s", ret);
    return 0;
}

有什么建议吗?

c scanf
1个回答
3
投票
sscanf(str, "{\"num\":%s, %s" , ret);

是错误的,首先你有两个"%s",但你只给了一个位置来保存字符串("%s")。撤退),而且它并没有像你所期望的那样提取出

你想

#include <stdio.h>
#include <stdlib.h>

int main(void) {

    char *str = "{\"num\":1,\"data\":{\"city\":\"delhi\"}}";
    char *ret = malloc(10); /* by definition sizeof(char) is 1 */

    if (sscanf(str, "{\"num\":%9[^,]" , ret) == 1)
        printf("value is '%s'\n", ret);

    free(ret);
    return 0;
}

汇编和执行

/tmp % gcc -Wall p.c
/tmp % ./a.out
value is '1'
/tmp % 

但要用 扫描f 解析的限制是

© www.soinside.com 2019 - 2024. All rights reserved.