gpt4 book ai didi

c - C 中的 JSON 解析器技巧

转载 作者:行者123 更新时间:2023-11-30 19:45:58 26 4
gpt4 key购买 nike

首先我知道有很多列表,在过去 3 天里我可能检查了 10 多个免费的 json 解析器。我仍在寻找的原因可能是因为我没有找到工作示例/信息/诸如此类的东西来让我想要的工作变得非常简单。我很确定这最终会被报告为问题,但尽管如此,我还是请求有 C 中 JSON 经验的人给我一个快速提示,因为这可能会让我花几个小时谷歌搜索并研究一个我需要大约 10 个 API 的时间代码行什么的。

数据作为用“,”分隔的字符串传递

JSON Data (Array)
string, string, int (Array)

Username,Password,2.4.0

基本上我需要的是一个 api,它提供类似的东西

[SWF] JSON->Stringify();

["Username","Password","2.4.0"]

很抱歉,如果您认为这是一个烦人的转发,但无论如何还是感谢您的阅读。

What I want to do in C

enter image description here

最佳答案

我没有任何“C 中的 JSON”经验,但我发现这个问题很有趣,并在 google 上搜索了一些 C JASON 解析器。我遇到了http://zserge.bitbucket.org/jsmn.html

好吧,这里有一些工作代码,可以为您的输入执行一些非常基本且非通用的字符串化操作。也许这有帮助:)

#include <stdio.h>
#include <string.h>
#include "jsmn.h"

#define TOKEN_PRINT(t) \
printf("start: %d, end: %d, type: %d, size: %d\n", \
(t).start, (t).end, (t).type, (t).size)

#define IN_POS_LEN(in, t) \
(in) + (t).start, (t).end - (t).start

int main()
{
static const char input[] = "['Mark','Secret','2.4.0']";

/* declare and init jsmn parser as per documentation
(or as per jsmn_test.c if documentation was not working) */
jsmn_parser parser;
jsmntok_t tok[256];
int r;
jsmn_init(&parser);

/* parse input and check for success and expected format */
r = jsmn_parse(&parser, input, strlen(input), tok, 256);
if(r >= 0
&& tok[0].type == JSMN_ARRAY)
{
/* now, 'stringify' an array of strings */
int stringNum;
for(stringNum = 1; stringNum <= tok[0].size; ++stringNum)
{
char tmp[128] = {0};
memcpy(tmp, IN_POS_LEN(input, tok[stringNum]));
printf("%s%s", tmp, stringNum == tok[0].size ? "\n" : ", ");
}
}
}

jsmn 库必须按照文档构建(开箱即用)。编译、链接和运行给出:

➜  jsmn  gcc mytest.c -L . -ljsmn; ./a.out
'Mark', 'Secret', '2.4.0'

编辑:好吧,如果我理解正确的话,你只是想从 C 中的一些变量生成那些登录字符串格式?然后我想我什至不会使用任何 API,因为使用 C: http://coliru.stacked-crooked.com/a/90a14edbe59db74a 很容易。

关于c - C 中的 JSON 解析器技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25316348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com