使用c语言的JSON解析器
我必须使用c代码解析JSON(而不是lib,因为我想让事情看起来尽可能简单),以便进行一些实时处理。下面是需要解析的数据,我将从代码本身生成的一些计算中得到这些数据。请帮帮我使用c语言的JSON解析器,c,json,parsing,jsonparser,C,Json,Parsing,Jsonparser,我必须使用c代码解析JSON(而不是lib,因为我想让事情看起来尽可能简单),以便进行一些实时处理。下面是需要解析的数据,我将从代码本身生成的一些计算中得到这些数据。请帮帮我 [ { "Letter": 0 , "Freq": 2858 }, . . . . . { "Letter" : 31, "Freq" : 0 } ] 这是我使用过的两个C库 :这可以解析字符串并准备json字符串 :这仅用于解析json字符串 这两个库都有很好的文档记录,并且都有
[
{
"Letter": 0 ,
"Freq": 2858
},
.
.
.
.
.
{
"Letter" : 31,
"Freq" : 0
}
]
这是我使用过的两个C库
这两个库都有很好的文档记录,并且都有可用的测试代码。似乎您只想提取“Freq”值,在这种情况下,此代码就足够了:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *str = "[{\"Letter\": 0 ,\"Freq\": 2858},{\"Letter\" : 31,\"Freq\" : 0}]";
int main(void)
{
char *ptr = str;
long value;
while (ptr) {
ptr = strstr(ptr, "\"Freq\"");
if (ptr == NULL) {
break;
}
ptr = strchr(ptr, ':');
if (ptr == NULL) {
break;
}
ptr++;
value = strtol(ptr, &ptr, 10);
if (*ptr != '}') {
break;
}
ptr++;
printf("%lu\n", value);
}
return 0;
}
#包括
#包括
#包括
char*str=“[{\'Letter\':0,\'Freq\':2858},{\'Letter\':31,\'Freq\':0}]”;
内部主(空)
{
char*ptr=str;
长期价值;
while(ptr){
ptr=strstr(ptr,“\”频率“);
如果(ptr==NULL){
打破
}
ptr=strchr(ptr,,:');
如果(ptr==NULL){
打破
}
ptr++;
值=strtol(ptr和ptr,10);
如果(*ptr!='}'){
打破
}
ptr++;
printf(“%lu\n”,值);
}
返回0;
}
你确定,实现JSON解析器比只使用现有库更简单吗?JSON是否总是以相同的格式使用相同的标签数?@KeineLust是的,在这种情况下只是频率变化。@Gerhardh,不确定。他说他不想使用库,抱歉我错过了。那么在本例中,使用可能有助于解析own@shubham你能详细说明一下吗?我正在计算代码中的数据,并希望在json文件中对其进行更新。您能否澄清是要将json更新为文件,还是仅对其进行解析,以下是用于解析和更新json读取/更新自/到文件的测试代码。Keine Lust在下面的回答中解释了strstr和strtok的用法