Vin*_*hou 10 embedded json jsonparser jsmn
我需要在嵌入式系统上解析一个小的JSON文件(只有10K RAM /闪存).JSON是:
{
"data1":[1,2,3,4,5,6,7,8,9],
"data2":[
[3,4,5,6,1],
[8,4,5,6,1],
[10,4,5,3,61],
[3,4,5,6,1],
[3,4,5,6,1],
[3,4,5,6,1]
]}
Run Code Online (Sandbox Code Playgroud)
jsmn看起来很符合要求,但它不像大多数JSON解析器,因为它只给你令牌.我试过了,但无法理解.
有人可以分享一个如何用jsmn解析它的例子吗?
Ben*_*ynn 21
jsmn将为您提供一组令牌,这些令牌指的是从左到右的JSON读数中的令牌.
在你的情况下:
token[0]: (outer) object, 2 children
token[1]: string token ("data1")
token[2]: array, 9 children
token[3]: primitive token (1)
etc...
Run Code Online (Sandbox Code Playgroud)
进行解析的基本代码是:
int resultCode;
jsmn_parser p;
jsmntok_t tokens[128]; // a number >= total number of tokens
jsmn_init(&p);
resultCode = jsmn_parse(&p, yourJson, tokens, 256);
Run Code Online (Sandbox Code Playgroud)
另一个技巧是获取令牌的价值.令牌包含原始字符串上数据的起点和终点.
jsmntok_t key = tokens[1];
unsigned int length = key.end - key.start;
char keyString[length + 1];
memcpy(keyString, &yourJson[key.start], length);
keyString[length] = '\0';
printf("Key: %s\n", keyString);
Run Code Online (Sandbox Code Playgroud)
有了它,您应该能够找到如何迭代数据.
| 归档时间: |
|
| 查看次数: |
13144 次 |
| 最近记录: |