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

在Arduino的C++环境中如何实现类似JS的键值对对象?

在Arduino(C++)中实现类似JavaScript的键值对结构

针对你想要的键值对(类似JSON/JS对象)需求,这里提供三种适合Arduino环境的实现方式,从轻量到功能丰富:

方案1:结构体数组 + 自定义查找函数(无额外依赖,最省内存)

这种方法不需要任何额外库,适合资源有限的小型Arduino板(比如Uno),核心是用结构体存储键值对,再写一个简单的查找函数来通过键获取值:

// 定义存储时区的结构体
struct TimeZone {
  const char* city;  // 城市名(键)
  int offset;        // 时区偏移(值)
};

// 初始化键值对数组
TimeZone timeZones[] = {
  {"London", 0},
  {"Paris", 1},
  {"Sydney", 10},
  {"Los Angeles", -8}
};
// 计算数组元素个数
const int timeZoneCount = sizeof(timeZones) / sizeof(timeZones[0]);

// 根据城市名查找时区偏移的函数
int getTimeZoneOffset(const char* targetCity) {
  for (int i = 0; i < timeZoneCount; i++) {
    // 用strcmp比较字符串是否相等
    if (strcmp(timeZones[i].city, targetCity) == 0) {
      return timeZones[i].offset;
    }
  }
  // 如果找不到,返回默认值(这里设为0)
  return 0;
}

// 使用示例
void setup() {
  int pst = getTimeZoneOffset("Los Angeles") * 3600;
  // 后续可以使用pst变量做其他操作
}

void loop() {
  // 循环代码
}

方案2:使用std::map(C++标准容器,用法更直观)

C++的std::map是原生的键值对容器,用法和JS对象最接近,但会占用更多内存,适合内存充足的Arduino板(比如Mega):

#include <map>
#include <string>

// 初始化键值对容器
std::map<std::string, int> timeZones = {
  {"London", 0},
  {"Paris", 1},
  {"Sydney", 10},
  {"Los Angeles", -8}
};

// 使用示例
void setup() {
  // 直接通过键访问值,和JS写法几乎一致
  int pst = timeZones["Los Angeles"] * 3600;
}

void loop() {
  // 循环代码
}

注意:部分小型Arduino板可能需要在IDE中开启C++11及以上支持(在文件→首选项→附加开发板管理器网址的配置中添加相关设置,或在平台IO中修改编译选项)。

方案3:使用ArduinoJson库(推荐复杂JSON场景)

如果后续需要处理更复杂的JSON结构(比如嵌套键值对),可以用专门为Arduino设计的ArduinoJson库,内存效率高且功能强大:

  1. 先在Arduino IDE的「库管理器」中搜索安装ArduinoJson库
  2. 编写代码:
#include <ArduinoJson.h>

void setup() {
  // 静态分配内存(128字节足够存储你的时区数据)
  StaticJsonDocument<128> timeZones;
  
  // 添加键值对
  timeZones["London"] = 0;
  timeZones["Paris"] = 1;
  timeZones["Sydney"] = 10;
  timeZones["Los Angeles"] = -8;

  // 访问值,需要用as<int>()转换类型
  int pst = timeZones["Los Angeles"].as<int>() * 3600;
}

void loop() {
  // 循环代码
}

如果需要处理更大的JSON数据,可以换成DynamicJsonDocument(动态分配内存)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:05:56