问题标签 [jsmn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
19298 浏览

json - 如何在嵌入式系统上用 jsmn 解析一个小的 JSON 文件?

我需要在嵌入式系统上解析一个小的 JSON 文件(只有 10K RAM/闪存)。JSON是:

jsmn看起来很适合这个要求,但它不像大多数 JSON 解析器,因为它只给你令牌。我试过了,但无法弄清楚。

有人可以分享一个如何用jsmn解析它的例子吗?

0 投票
1 回答
875 浏览

c - 如何使用 jsmn 构建 C 脚本?

我正在尝试编写一个简单的 ANSI C 脚本,该脚本使用 cURL 进行一些 REST 调用,然后使用Jsmn解析 JSON 响应主体。我已经完成了所有 cURL 部分的工作,但我不知道如何将事情与 jsmn 正确连接起来。因此,首先,我一直在尝试构建他们的示例。

例如,在克隆 repo 之后,有一个 examples/ 目录,其中包含一个名为 simple.c 的文件。我试图用这个命令来构建它:

但这导致了一个看起来像这样的错误响应:

我承认我对在 ANSI C 和所有 Linux 中做任何事情都很陌生。我相信我必须告诉gcc链接源,但我不确定如何正确地做到这一点。

只是为了让你知道我到目前为止所做的尝试,在make按照自述文件的指示运行后,我将生成的 jsmn.o 和 libjsmn.a 文件复制到 /usr/local/lib,并在 jsmn.o 上 chmod'ed 0755文件。然后我通过发出以下命令再次尝试:

但不幸的是,它仍然有完全相同的错误输出。

0 投票
0 回答
674 浏览

c - JSMN API 的问题

我正在努力弄清楚 jsmn 库是如何工作的。这是我当前的代码及其产生的内容。我的问题仅基于 derefBy 函数

我知道我必须返回一个 jsmn 标记,但我不太确定如何仅使用名字或姓氏来创建它。这是使用此函数的示例代码。

我的困惑是基于结果。我得到的似乎完全随机

或者我得到这个而不改变任何东西

我希望它简单地产生

fmt 是一个由 's' 和 'd' 字符组成的字符串,它描述了剩余的参数是对象键还是数组索引。例如, derefBy(marker,"sds",key1, sub1, key2) 将首先通过 key1 解引用标记,然后索引 sub1,最后是 key2

0 投票
1 回答
493 浏览

c - C字符串Jsmn jason解析器上的新手查询

我从使用 Golang 编程开始,事情看起来很简单。然后我偶然发现了 C 的 JSON 解析器(JSMN),因此我可以尝试 CGO。

这是此示例中的代码行(1146):

这给了我结果:

“-用户:johndoe”

我是 C 新手。我想将值“johndoe”放入变量中。我尝试了下面的代码,它给了我NULL

输出:

“-用户:空”

我怎样才能做到这一点?谢谢!

0 投票
1 回答
483 浏览

c - 尝试读取 json 文件时出现分段错误

我正在尝试使用 jsmn 解析 json 文件,但是在运行应用程序时出现分段错误。我正在使用 C 并在 Ubuntu 机器上编译。

请在下面找到代码片段:



当读取的文件操作完成时,我在行后出现分段错误。

在调试时,此时f包含0x00值,这意味着它无法识别文件。

当文件存在于该位置时,为什么会发生这种情况?

我尝试改变路径,但仍然是同样的问题。

0 投票
0 回答
46 浏览

c - jsmn解析器:如何使用jsmn解析器获取json字符串中的所有键

我正在使用 jsmn 解析器(链接)来解析从 AWS 云接收到的 delta 有效负载。有效载荷格式可以如下:

我从上面的字符串中想要的是所有键都存在于接收到的 JSON 有效负载中。像“key1”,“key2”和“key3”出现在上面的字符串中。

我可以使用 jsmn 提供的“findToken”API 解析各个键,但我想要一些通用的解决方案,通过它我可以知道其中存在哪些所有键,而不是比较我列出的每个键。

那么,任何人都可以提供任何提示/建议,通过使用 jsmn 解析器可以实现上述目标吗?

我正在使用嵌入式 C aws SDK。

提前致谢!

0 投票
0 回答
16 浏览

json - jsmn解析器:如果值与键名相同,则解析不正确

我正在使用 jsmn 解析器(链接)来解析有效负载。有效载荷格式可以如下: { "ver":"01", "elem_cnt":2, "1":"india", "2":"usa" } 尝试解析 key value = “2” i我得到的值是“1”而不是“usa”。

那么,任何人都可以提供任何提示/建议,通过使用 jsmn 解析器可以实现上述目标吗?

0 投票
1 回答
74 浏览

c - 仅标头的 C“库”不是浪费吗?

我正在查看一个只有标头的 C“库”:https ://github.com/zserge/jsmn/blob/master/jsmn.h

据我了解,这段代码将被编译到 .c 文件包含的每个目标文件中jsmn.h,浪费空间。

(文件的函数定义在里面#ifndef JSMN_HEADER,因此您可以通过定义 JSMN_HEADER 将其用作“传统”头文件。)

  • 为什么没有把它写成“传统”.c.h配对?
  • 链接器是否足够聪明,可以在目标文件之间重复功能相同的定义?我会预料到“重复符号”错误。
  • 将代码放在标头中会给 C 带来什么好处?(不是 C++。)
  • #define JSMN_HEADER如果在导入之前使用,您从哪里获得函数定义?
  • 只是jsmn.h头部是一个聪明的把戏,我可以从中学习吗?