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

如何将指定格式的CSV文件转换为含filters层级且name嵌套在details中的JSON结构?

如何将指定格式的CSV文件转换为含filters层级且name嵌套在details中的JSON结构?

嗨,我来帮你搞定这个CSV转JSON的需求!你想要的是给最终输出加一个外层的filters数组,还得把name字段嵌套到details子对象里,对吧?

先回顾下你的输入CSV内容:

ID,item,name
1,A,aname
2,A,bname
6,A,zname
8,A,xname

以及期望的JSON结构:

{
  "filters": [
    {
      "ID": "1",
      "item": "A",
      "details": {
        "name": "aname"
      }
    },
    {
      "ID": "2",
      "item": "A",
      "details": {
        "name": "bname"
      }
    },
    {
      "ID": "6",
      "item": "A",
      "details": {
        "name": "zname"
      }
    },
    {
      "ID": "8",
      "item": "A",
      "details": {
        "name": "xname"
      }
    }
  ]
}

你之前的命令只是把CSV每行直接转成了字典列表,没处理嵌套结构和外层的filters键。咱们稍微修改一下Python代码就能实现需求,直接用这条命令就行:

cat /tmp/input.csv | python -c 'import csv, json, sys; rows = []; for r in csv.DictReader(sys.stdin): rows.append({"ID": r["ID"], "item": r["item"], "details": {"name": r["name"]}}); print(json.dumps({"filters": rows}, indent=2))'

我给你拆解下这段代码的逻辑:

  • 用csv.DictReader读取标准输入的CSV内容,每一行都会变成一个键值对字典
  • 遍历每一行字典,手动构造我们需要的结构:保留ID和item字段,把name放到details这个子对象里
  • 把所有构造好的对象收集到rows列表中
  • 最后把rows作为filters键对应的值,用json.dumps转成JSON字符串,indent=2是为了让输出的JSON更美观易读,要是不需要格式化可以去掉这个参数

运行这条命令后,就能得到你想要的JSON结构啦。如果之后CSV里新增了需要放到details里的字段,只要在details的字典里加上对应的键值对就行,比如"details": {"name": r["name"], "price": r["price"]}这样。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:28:08