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

如何将单键对应数组的JSON转换为带时间戳的键值对数组

JSON格式转换:单时间键数组转含时间戳的对象数组

需求说明

我有一段JSON数据,结构是单个时间戳键对应一个包含tag和value的对象数组,需要把它转换成每个对象都带上原时间戳(命名为ts)的数组格式。

源数据

{
  "2022-08-30T06:58:56.573730Z": [
    { "tag": "AC 3 Phase/7957", "value": 161.37313113545272 },
    { "tag": "AC 3 Phase/7956", "value": 285.46869739695853 }
  ]
}

目标格式

[
   { 
     "tag": "AC 3 Phase/7957",
     "ts": "2022-08-30T06:58:56.573730Z",
     "value": 161.37313113545272
   },
   { 
     "tag": "AC 3 Phase/7956",
     "ts": "2022-08-30T06:58:56.573730Z",
     "value": 285.46869739695853
   }
]

实现方案

JavaScript 版本

const source = {
  "2022-08-30T06:58:56.573730Z": [
    { "tag": "AC 3 Phase/7957", "value": 161.37313113545272 },
    { "tag": "AC 3 Phase/7956", "value": 285.46869739695853 }
  ]
};

// 取出唯一的时间戳键
const timestamp = Object.keys(source)[0];
// 遍历数组,给每个对象添加ts字段
const transformed = source[timestamp].map(item => ({ ...item, ts: timestamp }));

console.log(JSON.stringify(transformed, null, 2));

Python 版本

import json

# 源JSON字符串
source_str = '''
{
  "2022-08-30T06:58:56.573730Z": [
    { "tag": "AC 3 Phase/7957", "value": 161.37313113545272 },
    { "tag": "AC 3 Phase/7956", "value": 285.46869739695853 }
  ]
}
'''

source_data = json.loads(source_str)
# 获取时间戳键(因为只有一个键,直接取第一个)
timestamp = next(iter(source_data.keys()))
# 生成目标数组
transformed_data = [{**item, 'ts': timestamp} for item in source_data[timestamp]]

# 打印格式化后的结果
print(json.dumps(transformed_data, indent=2))

核心思路

  1. 提取源数据中唯一的时间戳键;
  2. 遍历原数组里的每个对象,把时间戳作为ts字段添加进去;
  3. 最终得到包含所有带时间戳对象的数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:33:38