groovy 把json串转化成对象

本文介绍了如何使用Groovy将从Redis获取的JSON字符串转换为对象,以方便后续操作。由于JSON字段名与对象属性名不匹配,文中提到了使用camel函数进行映射的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天有个任务,要把redis中缓存的json串读取出来并放到对象中,便于后续使用对象。相关代码如下:

json串
{
     "GDS_ID":"123",
     "GDS_NAME":"手机"
 }
对象定义
class TGdsInfo {
        def gdsId
        def gdsName
}
完整代码
import groovy.json.JsonSlurper

/**
 * Created by fangyunfeng on 2015/9/12.
 */

def gdsInfo = '''
        {
                "GDS_ID":"123",
                "GDS_NAME":"手机"
        }
'''


class TGdsInfo {
        def gdsId
        def gdsName
}

/**
 * json串字段名到对象属性名映射函数
 * @param s
 * @return
 */
def camle(String s){
        return s.toLowerCase()
                .replaceAll("_[A-Za-z]"){String it->it.toUpperCase()}
                .replace('_','')
}

def gdsJson = new JsonSlurper().parseText(gdsInfo)
def gdsObj = new TGdsInfo()
gdsJson.each {Map.Entry entry ->
        String propName = camle(entry.key)
        if(gdsObj.metaClass.hasProperty(gdsObj,propName)){
                gdsObj[propName] = entry.value
        }
}

println("gdsId:"+gdsObj.gdsId)
println("gdsName:"+gdsObj.gdsName)
输出结果
gdsId:123
gdsName:手机

Process finished with exit code 0

注意,这里json串中的字段名跟对象中的属性名并不一致,所以需要通过camel函数做一下映射。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值