groovy 把json串转化成对象

今天有个任务,要把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函数做一下映射。

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...