You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言使用+拼接字符串构造JSON对象失败如何解决

错误原因

  • C语言没有+运算符拼接字符串的语法,你写的字符串相加本质是指针地址运算,属于非法操作,无法得到拼接后的字符串
  • 合法JSON要求所有字符串类型的键、值都必须用双引号包裹,你原逻辑缺少值两侧的双引号,即使拼接成功也不是有效JSON

正确实现

使用标准库的snprintf做格式化输出是这类场景的最优解,示例代码如下:

#include <stdio.h>
int main() {
    char R_FPD[] = "+00393E33mm/go";
    char R_FPH[] = "+00393E33mm/go";
    char R_Vel[] = "+00393E33mm/go";
    char R_Tot[] = "+00393E33mm/go";
    // 定义存储JSON的缓冲区,大小根据实际需要调整,避免溢出
    char str_msg[256] = {0};
    // 格式化生成JSON,字符串内的双引号需要加\转义,%s对应后续的字符串变量
    snprintf(str_msg, sizeof(str_msg), 
             "{\"flow_rate_per_day\":\"%s\",\"flow_rate_per_hour\":\"%s\",\"velocity\":\"%s\",\"totalizer\":\"%s\"}",
             R_FPD, R_FPH, R_Vel, R_Tot);
    printf("%s", str_msg);
    return 0;
}

运行后输出的合法JSON如下:
{"flow_rate_per_day":"+00393E33mm/go","flow_rate_per_hour":"+00393E33mm/go","velocity":"+00393E33mm/go","totalizer":"+00393E33mm/go"}

如果后续需要处理更复杂的JSON结构(嵌套、数组、数值/布尔类型等),建议使用成熟的第三方JSON库如cJSON,避免手动拼接出现格式错误。

内容的提问来源于stack exchange,提问作者Noman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:06:01