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

如何将指定JSON转换为Groovy对象列表?使用map方法遇问题

Groovy中将JSON转换为对象列表的实现方案

方案一:自定义实体类映射

先根据JSON结构定义对应的实体类,再通过JsonSlurper解析JSON后,用collect方法将每个JSON对象转换为自定义实体对象。

// 定义对应JSON结构的实体类
class Askey {
    String ad
    int bt
}

class IdInfo { // 避免与Groovy内置标识符冲突,改用IdInfo命名
    int mc
    int zs
}

class Item {
    Askey askey
    IdInfo Id
}

// 解析并转换JSON
import groovy.json.JsonSlurper

def jsonContent = '''
[
  {
    "askey": {
      "ad": "000001",
      "bt": 1
    },
    "Id": {
      "mc": 30,
      "zs": 476
    }
  }
]
'''

def jsonSlurper = new JsonSlurper()
def rawJsonList = jsonSlurper.parseText(jsonContent)

// 转换为自定义对象列表
List<Item> itemList = rawJsonList.collect { jsonObj ->
    new Item(
        askey: new Askey(
            ad: jsonObj.askey.ad,
            bt: jsonObj.askey.bt
        ),
        Id: new IdInfo(
            mc: jsonObj.Id.mc,
            zs: jsonObj.Id.zs
        )
    )
}

// 验证结果
itemList.each { item ->
    println "askey: ad=${item.askey.ad}, bt=${item.askey.bt}"
    println "Id: mc=${item.Id.mc}, zs=${item.Id.zs}"
}

方案二:使用动态对象(Expando)

如果不想提前定义实体类,可以用Groovy的Expando创建动态对象,灵活完成转换:

import groovy.json.JsonSlurper

def jsonContent = '''
[
  {
    "askey": {
      "ad": "000001",
      "bt": 1
    },
    "Id": {
      "mc": 30,
      "zs": 476
    }
  }
]
'''

def jsonSlurper = new JsonSlurper()
def rawJsonList = jsonSlurper.parseText(jsonContent)

// 转换为动态对象列表
def dynamicItemList = rawJsonList.collect { jsonObj ->
    def askeyObj = new Expando(
        ad: jsonObj.askey.ad,
        bt: jsonObj.askey.bt
    )
    def idObj = new Expando(
        mc: jsonObj.Id.mc,
        zs: jsonObj.Id.zs
    )
    new Expando(askey: askeyObj, Id: idObj)
}

// 验证结果
dynamicItemList.each { item ->
    println "askey: ad=${item.askey.ad}, bt=${item.askey.bt}"
    println "Id: mc=${item.Id.mc}, zs=${item.Id.zs}"
}

常见失败原因说明

之前使用map方法未成功,大概率是因为未处理嵌套结构的转换,或是直接尝试将JSON对象映射到未定义的实体类上,导致无法正确赋值。上述两种方案均针对嵌套结构做了逐层转换,能解决这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:52:46