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

使用Python将API返回的特殊格式数据转换为指定JSON结构

解决方案

步骤说明

  1. 清理输入字符串:先去除末尾多余的换行符和空格,避免分割后产生空元素。
  2. 分割块数据:用{#作为分隔符,把原始字符串拆分成独立的配置块。
  3. 提取vwId和生成vdef数组:每个块的第一个元素就是vwId,剩余元素按~拆分键值对,组成vdef数组。

代码实现(JavaScript)

// 原始输入字符串
const rawInput = 'tt_cls|rd~1|rk~1|kk~1{#tt2_cls|rd~1|rk~1|kk~0{#tt3_cls|rd~1|rk~1|kk~0\n\n';

// 1. 清理字符串,去除末尾换行和空格
const cleanedInput = rawInput.trim();

// 2. 分割成独立配置块,过滤空元素
const blocks = cleanedInput.split('{#').filter(block => block.length > 0);

// 3. 处理每个块,生成目标结构
const finalResult = blocks.map(block => {
  const segments = block.split('|');
  // 提取vwId(块的第一个部分)
  const vwId = segments[0];
  // 处理剩余部分生成vdef数组
  const vdef = segments.slice(1).map(item => {
    const [key, value] = item.split('~');
    return { name: key, value: value };
    // 若需直接键值对对象,可替换为:{ [key]: value }
  });
  return { vwId, vdef };
});

// 转换为格式化的JSON输出
console.log(JSON.stringify(finalResult, null, 2));

输出结果

[
  {
    "vwId": "tt_cls",
    "vdef": [
      { "name": "rd", "value": "1" },
      { "name": "rk", "value": "1" },
      { "name": "kk", "value": "1" }
    ]
  },
  {
    "vwId": "tt2_cls",
    "vdef": [
      { "name": "rd", "value": "1" },
      { "name": "rk", "value": "1" },
      { "name": "kk", "value": "0" }
    ]
  },
  {
    "vwId": "tt3_cls",
    "vdef": [
      { "name": "rd", "value": "1" },
      { "name": "rk", "value": "1" },
      { "name": "kk", "value": "0" }
    ]
  }
]

关键注意点

  • 必须过滤分割后的空元素,否则会生成无效的vwId和空的vdef数组。
  • 如果你的vdef需要的是键值对对象而非数组,只需把map替换为reduce来生成对象即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:39:19