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

Arduino JSON中如何将字符串作为对象名称?

Arduino JSON中如何将字符串作为对象名称?

兄弟,我完全懂你想要实现的效果——就是想用一个字符串变量里的内容(比如你例子里的"test")来当JSON对象的键名,而不是写死的固定字符串对吧?

先给你指出你原来代码里的小问题:同一个代码块里不能有两个同名的变量nameObj(一个是String类型,一个是JsonObject类型),这肯定会触发编译器报错,得先把变量名区分开,比如把存字符串的那个改成objName。

接下来重点说怎么实现你的需求,用Arduino JSON库(6.x版本及以上,ESP32用这个库完全没问题)其实很简单,直接用数组下标语法或者createNestedObject()方法就行,具体分两种情况:

  • 如果你是要在一个JSON文档(JsonDocument)或者已有的JsonObject里,创建一个以字符串变量为键的嵌套对象:
#include <ArduinoJson.h>

void setup() {
  Serial.begin(115200);
  
  // 创建一个静态JSON文档,大小根据你要存的数据调整
  StaticJsonDocument<256> doc;
  
  // 定义要作为对象名称的字符串变量
  String objName = "test";
  
  // 核心:用字符串变量作为键,创建嵌套JsonObject
  JsonObject targetObj = doc.createNestedObject(objName);
  
  // 给这个嵌套对象添加一些测试数据
  targetObj["status"] = "ok";
  targetObj["count"] = 42;
  
  // 序列化后打印到串口,看看结果
  serializeJsonPretty(doc, Serial);
}

void loop() {}

运行这个代码,串口会输出格式化后的JSON:

{
  "test": {
    "status": "ok",
    "count": 42
  }
}
  • 如果你只是想给已有的JsonObject添加一个键值对,键是字符串变量的值,直接用下标赋值就行:
// 假设dataObj是一个已有的JsonObject
String keyName = "temperature";
dataObj[keyName] = 25.5;

另外要注意,不管你用的是StaticJsonDocument还是DynamicJsonDocument,这个用法都是通用的,区别只是前者是静态内存分配(适合小数据),后者是动态分配(适合大数据)。

备注:内容来源于stack exchange,提问作者Hosein shirani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 11:13:12