问题标签 [json-c]

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 投票
1 回答
700 浏览

c - 如何使用 json-c 转换几个 JSON 对象?

我希望使用json-c库来转换 .json 文档中包含的所有对象:

为了转换它们(目前我只想显示),我使用以下代码(我按照这个Youtube 视频中的说明进行操作):

这是编译和执行后终端向我显示的内容:

所以这是我的各种问题

  1. 如何转到下一个对象并知道 .json 中的对象数量?
  2. 我认为如果对象数量太大,将缓冲区初始化为1024会导致问题,那么有没有办法让缓冲区一个一个地获取对象?
  3. 我有一种感觉,内存的释放不对,是我忘记了一些free吗?
0 投票
1 回答
140 浏览

c - 在 C 中发布 JSON 对象时,位置 0 处出现意外的令牌 004

我在尝试发送我在 C 中创建的 JSON 对象时遇到问题。服务器能够很好地发送和接收数据。说到C,我是个业余爱好者。

当打印出 JSON 对象时,我得到了这个 -> The json object created:{ "id": "hello, world" }

服务器响应如下

当使用 Wireshark 拦截请求时,Post 看起来像这个 POST 请求 并且响应错误是这个 BAD REQUEST 400

我几乎可以肯定,错误是我构建 JSON 对象的方式,但如前所述,我在 C 语言中很新。如果我硬编码文本而不是对象,则请求成功。任何帮助将非常感激。谢谢!

0 投票
2 回答
106 浏览

c - 在C中返回字符串数组的函数

我是 C 新手,目前正在开发一个项目,我需要从 Json 文件中读取列表(使用json-c library)。因此,我创建了一个返回字符串数组(列表)的函数。我进行了搜索,发现要在函数中返回字符串数组,您需要输入以下内容:

主要是:

我的问题是,当我在读取函数中创建数组时,我没有声明它,而是遍历列表项(来自 json 对象)并将它们添加到列表中。例如,我不:

我愿意:

当我尝试在 strcpy (在 for 循环中)之后打印列表项时,它会关闭程序。所以,我试图创建这样的数组:

然后返回这个:

它奏效了。但是,当我返回列表时,它会在编译器中给我一个警告:

main.c:66:20:警告:从不兼容的指针类型初始化 [-Wincompatible-pointer-types]

当我尝试在 main 中打印列表时,它会崩溃。

是源代码。如果需要,请检查它。

请帮我。

0 投票
0 回答
155 浏览

c - 共享库符号冲突 - C

我有一个链接到 json-c 和第三方库的应用程序。这个第三方库链接到 libjansson 库。因此,当我执行我的应用程序时,由于内存损坏作为无效指针,它会崩溃。

经过分析,这两个库都有json_object_get()导致奇怪行为的 API。如果我从 json-c 库更改此 API 名称,应用程序将按预期工作。

由于我什至尝试将 libjannson 静态链接到第三方库以及将 json-c 静态链接到应用程序,它不会崩溃但仍然会失败 json-c 调用。

场景如下:

  • app链接到 libjson_c_lib.so 和 libjansson_c_lib.so。这两个都是 json-c 和 jannson 之上的包装库。

  • libjson_c_so链接到 libjson-c.so

  • libjansson_c.so链接到 libjansson.so。

你能请人帮忙吗?

0 投票
2 回答
513 浏览

c - json_tokener_parse ,分段错误

如第410行和第411行所示,如果使用410行代码,414行函数调用会出现段错误。如果使用411行代码,414行不会出错,因为这个函数被别人调用了,可能会输入错误字符串。我不想看到段错误来停止程序。有什么办法可以避免这种段落错误?

0 投票
1 回答
1349 浏览

windows - 基于 Windows 平台的 JSON-C 构建

免责声明:请仔细阅读问题,这个问题有一个转折,所以请阅读到最后。

因此JSON-C是使用 C 编程处理JSON的非常流行的库之一。当前工作的基本说明,此处构建的任何代码都是针对多平台的。目前支持 Linux 和 Windows 的平台,我对 Windows 相关的 JSON-C 部分有一些小问题。

我正在使用 Cygwin 进行 Windows 开发,当我按照其 GitHub 页面上提供的说明编译 JSON-C 代码时,使用 CMAKE 效果非常好,并且构建系统能够为 Windows 生成 DLL。但是,如果您使用过 Cygwin,那么您必须知道使用 Cygwin 构建的任何内容都将依赖于它的运行时环境(cygwin1.dll)(为什么 GCC-Windows 依赖于 cygwin?),它不会是独立的 DLL,可以移动到具有相同架构的不同系统。因此,如果我的项目是在 Windows 平台上构建的,那么由于对 Cygwin 的依赖,我必须随身携带 Cygwin Run-Time Env。或者我必须确保在目标系统上安装了 Cygwin 才能顺利执行。我不希望我的项目有这种依赖,它会破坏用户体验。

所以我想在这里得到帮助,有没有办法独立于 Cygwin(运行时环境)构建 JSON-C?

注意:我已经知道,如果使用 Cygwin 的人希望为 Windows 创建这样一个独立的 DLL,那么可以使用编译器的少量参数和一些位于函数声明前面的附加宏来完成,如此处所述在 GCC 中创建 DLL 或赛格温?
但我在 Windows 的源代码 JSON-C 中看不到这种支持。所以我只是想知道 JSON-C 开发团队是否通过构建系统保留了一些规定,那么我很想知道那部分。

PS:由于我的其他开发,我还没有涉足 JSON-C 构建系统,所以如果那里的任何人(我心爱的社区)对此有任何了解,请分享,那将是非常棒的。

编辑
忘了提及我正在使用的版本:p json-c-0.13.1-20180305

0 投票
1 回答
439 浏览

c - 遍历和修改 C json 字符串

在C中遍历和修改JSON字符串的正确方法是什么?

具体来说,我有一个字符串 body_buf。打印出来时

它看起来像这样:

另一个更复杂的 body_buf 可能如下所示:

我想根据以下规则简化 body_buf (也可以作为删除敏感信息的两倍),只修改值,而不修改任何键:

  1. 字符串变成字符串的长度。
  2. 字符串数组变为 [array_len, max_len, min_len]。
  3. 数字数组变为 [array_len, max, min]。

我不熟悉在 C 中使用 JSON 字符串。最好的方法是什么?

我可以将 body_buf 视为一个字符串并遍历它,修改“:”之后的任何内容,因为这些必然是我可能修改的值,具体取决于类型。对于数组,我需要跟踪夹在“[”和“]”之间的任何内容。这可以工作,但似乎不是很简单。

或者,也许将 body_buf 转换为 JSON 类型,然后遍历嵌套结构。但是我也必须修改它。我还没有找到一个使用 json-c 或其他方式遍历和修改(或通过某种深拷贝创建一个新的?)JSON 对象的 C 示例(这将是有帮助的)。

抛开细节(上面的规则,1-3)不谈,这应该是一个比较常见的操作——遍历和修改。因此,对于那些更熟悉 C 语言中 json-c 或 JSON 操作的复杂性和良好/标准实践的人,我正在寻找一些指针。

同样,我有 json-c:

到目前为止,我查看的相关信息包括以下内容:

https://gist.github.com/alan-mushi/19546a0e2c6bd4e059fd

如何在 json_tokener_parse() 之后获取 json 值?

使用 json-c 解析深度嵌套的 JSON 键

0 投票
1 回答
554 浏览

arrays - 使用json-c库解析json数组

我从服务器返回了以下 JSON 数据,但我无法弄清楚如何解析操作数组以进行叙述:

我正在使用json-c库。我尝试使用循环并获取数组中的索引号,但由于出现错误而无法正确执行。

我将如何访问演习中的叙述部分?

编辑:我得到的错误是当我使用 json_object_array_length(maneuvers) 时,它说机动不是有效的 json 对象。请注意,mauevers 已经是我从父 json 对象解析的数组

0 投票
0 回答
581 浏览

postgresql - 从源代码在 Postgresql 14 中安装 Postgis 时出错

我正在尝试安装 Postgis。

我有安装先决条件:

  • 地理 3.5.6
  • 项目 7.0.0
  • jsonc 0.15
  • gDal 3.0.0

这是配置 Postgis 时的日志:

这是错误

错误

0 投票
0 回答
127 浏览

c - 如何在 Eclipse 中使用 Json-c 解析器或任何其他解析器在 Windows 中进行 C 编程

我在 Windows 10 中使用 Eclipse C/C++ 开发人员 IDE我已经下载了 json-c 解析器,但我不知道在 eclipse 中使用它来进行 C 编程。我从这个链接https://github.com/json-c/json-c下载了它。我已经从 Eclipse Marketplace 下载了 Json Editor Plugin。请帮帮我。任何解析器都可以。谢谢你。