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
相关产品推荐
相关产品推荐

