问题标签 [cjson]
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.
c++ - string.h 中的索引声明被 cJSON.h 所掩盖
我正在尝试制作一个使用string.h
andcJSON
库的 C++ 程序。但是当我构建它时,我收到警告说:
cJSON.c:1743:警告:“索引”的声明遮蔽了全局声明字符串。h:
487:警告:遮蔽声明在这里
这些警告并不真正影响程序的功能,程序按预期运行。但我正在尝试使用 AzDo 管道构建程序以将其导出,并且 AzDo 管道在警告上构建失败。所以,我需要找到解决这些警告的方法。解决此问题的最佳方法是什么?
编辑:
cJSON.c
1743 行是这样的:
static cJSON* get_array_item(const cJSON *array, size_t index)
string.h
487 行是这样的:
extern char *index (__const char *__s, int __c)
c - cJSON_Delete(); 导致free():无效指针:0xb5db1e18
代码
每当我使用 cJSON_Delete() 程序崩溃并给出错误 *** Error in `./sample': free(): invalid pointer: 0xb5db1e18 ***
我对此进行了很多搜索,但找不到解决方案。
请告诉我这是如何工作的?
esp32 - memory leak using cJson ESP32
Please could someone help me to identify why there is a memory leak using cJson I could not find the problem. whenever I do an authentication the live memory decreases. The json is created only at that point, I have already changed the control logic but in any case it always ends up leaking memory
json - 在 Openresty 中使用 cjson Lua 模块解析缺少字段的 JSON
我正在尝试解析通过 POST 请求发送到 NGINX/Openresty 的 json 有效负载location
。为此,我将 Openrestycontent_by_lua_block
与其cjson
模块结合起来,如下所示:
解析包含所有必填字段的示例数据按预期工作。正确的 JSON 对象可能如下所示:
但是,用户可能会将不同格式的 JSON 对象发布到location
. 假设一个简单的 JSON 文档,如
不包含所需的字段/键。
根据cjson
模块文档,如果遇到无效数据,使用cjson
(不使用其safe
模式)将引发错误。为了防止出现任何错误,我决定safe
通过导入来使用它的模式cjson.safe
。这应该返回nil
无效数据并提供错误消息而不是引发错误:
如果遇到任何无效数据,
cjson
模块将在 JSON 转换过程中抛出错误。[...]该
cjson.safe
模块的行为与 cjson 模块相同,除非在 JSON 转换期间遇到错误。出错时,cjson_safe.encode
andcjson_safe.decode
函数将返回 nil,后跟错误消息。
但是,在我的案例中,我没有遇到任何不同的错误处理行为,Openresty 的error.log
文件中显示了以下回溯:
2021/04/30 20:33:16 [error] 6176#6176: *176 lua entry thread aborted: runtime error: content_by_lua(samplesite:50):16: 尝试索引字段“endpoint”(零值)
这反过来会导致内部服务器错误:
我认为一种解决方法可能是编写一个专用函数来解析 JSON 数据并调用它pcall()
来捕获任何错误。但是,这会使safe
模式变得毫无用处。我在这里想念什么?
nginx - 如何将 lua-cjson 添加到我的 nginx lua 容器中?
我正在使用这个 docker-compose 创建一个 Lua 支持的 Nginx:
现在我需要将cjson库添加到我的容器中。我在我的主机上尝试了 build 方法,但它抛出了这个异常:
lua.h:没有这样的文件或目录
我还添加了这些行以使其在我的容器上:
但它在运行阶段失败并出现此错误:
执行:第 38 行:cd /usr/local/share/lua/5.1/resty/cjson autoreconf -i -v --force ./configure make make install:未找到
有什么直接在我的容器上安装 cjson 的方法吗?
更新:
我终于将 cjson.so 构建并上传到我的 docker 容器中,但出现此错误:
从文件'/usr/local/lib/lua/5.1/cjson.so'加载模块'cjson':重新定位/usr/local/lib/lua/5.1/cjson.so时出错:__snprintf_chk:找不到符号
那么还有没有其他性能良好的替代库?
c - cJSON_Delete() 和 cJSON_free()
我还是 cJSON 库的新手,我不能完全理解 cJSON_Delete() 和 cJSON_free() 的用途,
- 是否有任何文档准确描述了应该发布哪些功能,以及何时使用 cJSON_free() 以及何时使用 cJSON_Delete()。
- cJSON_InitHooks() 的用途是什么以及如何在我的代码中使用它。
- 每次我声明一个变量
cJSON *Variable;
时,我是否需要释放它以最小化内存使用量,否则它会自行释放?
谢谢!!
c - cJSON 解析在释放 json 对象后给出垃圾值
在我的一个项目中,我使用 cJSON 库来提取密钥。让我用代码告诉你这个问题。
代码:
问题:在这里,当我解析密钥时,我得到了"abc"
预期并保存在 global 中username
。一旦我得到密钥,"abc"
我就会在 while 循环中做一些事情。但是在somefunction
完成username
对垃圾值的变量更改之后。
我了解导致此问题的一个问题是,当我检索 CJSON 引用address
(指针)时的密钥时。cJSON_GetObjectItem(tree_1, "name")->valuestring;
但是问题是在解析了我保存在全局变量中的密钥并且过程完成之后,为什么它会变成垃圾。
有没有其他方法可以解决这个问题。
提前致谢
c - 在不知道键名或值的数据类型的情况下进行 cJSON 解析
我正在编写一个需要解析我不知道确切格式的 json 的程序。重要数据可以存储在多个可能的键中。为简单起见,假设键的名称可以是“A”或“B”。我不知道它会是哪个,我也不知道该值是字符串、整数还是数组。我只想将“A”或“B”的值保存为字符串以供以后使用。有没有办法在 cJSON 中做到这一点,尤其是在数组的情况下?
c - 如何在 ESP32 服务器上处理带有 JSON 有效负载的 POST 请求?
我正在尝试从 ESP32 上的 http 服务器接收 json 数据,但是每次尝试访问 json 中的数据时,我都会感到核心恐慌。POST 请求是使用简单的 html 表单完成的:
char *buf
包含来自 POST 的数据,如下所示:type=Lager primary-duration=5\0
将数据读入 buf 后,我正在使用 cJSON 解析它
并提取“类型”对象
获取我的 cJSON 对象后,_IsString() 将其正确识别为字符串,但在尝试访问它时出现“LoadProhibited”恐慌。
我会很感激任何建议。
c - 在带有 cjson 的 ESP32 中使用 realloc 时出现问题
最近我一直在尝试使用 cJSON lib 解析一个 json 对象。在实现代码时,我使用递归调用来解析 json 对象中的 json 对象。json 包含一个设置列表,我将其保存在以下结构的数组中:
我有以下代码进行解析
如果我使用固定大小的向量,一切正常,但是当我切换到动态分配的内存时,我开始打印垃圾,所以我认为问题可能是我如何使用 realloc 函数。我错过了什么吗?
此外,json 文件如下所示:
提前致谢。