Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

cJSON_AddNumberToObject always zero.

未关闭
#976 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 12 天内回复

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
45/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
c
领域
backend

调研方向

首先复现围绕 cJSON_AddNumberToObject 和 cJSON_Print 报告的行为,将每个返回的项与序列化输出进行核对。确认所提供的整数值是被库丢失了,还是示例读取了另一个返回的项;完成的标准是证明原因,并在需要时通过一个针对性的回归测试覆盖该问题。

由索引模型根据 Issue 内容生成。

描述

    const int main_acct_id = 1;
    const int hostid = 2;
    const int sub_acct_id = 3;
    const int device_port = 4;

    cJSON_AddNumberToObject(root, "MAIN_ACCOUNT_ID", main_acct_id);
    cJSON_AddNumberToObject(root, "OBJECT_ID", hostid);
    cJSON_AddNumberToObject(root, "SUB_ACCOUNT_ID", sub_acct_id);
    cJSON_AddNumberToObject(root, "OBJECT_DEVICE_PORT", device_port);

    printf("main_acct_id: %d\n", main_acct_id);
    printf("hostid: %d\n", hostid);
    printf("sub_acct_id: %d\n", sub_acct_id);
    printf("device_port: %d\n", device_port);

    char *json_str = cJSON_Print(root);
    if (!json_str)
    {
        cJSON_Delete(root);
        return;
    }

    printf("%s\n", json_str);
Image

    tmp1 = cJSON_AddNumberToObject(root, "MAIN_ACCOUNT_ID", main_acct_id);
    if (!tmp1)
    {
        printf("MAIN_ACCOUNT_ID is NULL\n");
    }
    printf("MAIN_ACCOUNT_ID: %d\n", tmp1->valueint);

    cJSON_AddNumberToObject(root, "OBJECT_ID", hostid);
    if (!tmp1)
    {
        printf("OBJECT_ID is NULL\n");
    }
    printf("OBJECT_ID: %d\n", tmp1->valueint);

    cJSON_AddNumberToObject(root, "SUB_ACCOUNT_ID", sub_acct_id);
    if (!tmp1)
    {
        printf("SUB_ACCOUNT_ID is NULL\n");
    }
    printf("SUB_ACCOUNT_ID: %d\n", tmp1->valueint);

    cJSON_AddNumberToObject(root, "OBJECT_DEVICE_PORT", device_port);
    if (!tmp1)
    {
        printf("OBJECT_DEVICE_PORT is NULL\n");
    }
    printf("OBJECT_DEVICE_PORT: %d\n", tmp1->valueint);
Image
主要语言
C
星标
13k
派生
3.5k
PR 合并指标
30 天内没有已合并 PR

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

DaveGamble/cJSON 的其他 Issue

查看 DaveGamble/cJSON 的全部 Issue

相似的 Issue

更多 C Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。