我的DDBB中存储了一个字符串,例如在我的列数据中我有这个字符串:"name=James castle&age=20"
我希望在我的服务中转换为地图
我正在尝试这样的事情:
List <NameValuePair> parameters = myDomainInstance.data
if (org.externalDeliveryParameters){
parameters = URLEncodedUtils.parse(org.externalDeliveryParameters,
StandardCharsets.UTF_8)
}
我收到此错误:
Cannot cast object 'name=James castle&age=20' with class 'java.lang.String' to class 'java.util.List'
有人知道我怎么能用List<NameValuePair>
或其他形式做到这一点?
答案 0 :(得分:2)
我怀疑你真的想写这样的东西
List <NameValuePair> parameters
if (myDomainInstance.data) {
parameters = URLEncodedUtils.parse(myDomainInstance.data, StandardCharsets.UTF_8)
}
这是基于输入和输出参数。
答案 1 :(得分:0)
你可以这样做:
s = "name=James castle&age=20"
def map = s.split('&').inject([:]) {result, kv-> def (key, value) = kv.split('=').toList(); result[key] = value != null ? value : null; result }
如果您在数据库中存储URL,则需要使用Grails提供的decordeURL()方法,请查看以下内容:
def map = s.split('&').inject([:]) {result, kv-> def (key, value) = kv.split('=').toList(); result[key] = value != null ? value.decodeURL() : null; result }
答案 2 :(得分:0)
使用简单的正则表达式
def m = [:]
'name=James castle&age=20'.eachMatch( /([^&=]+)=([^&=]+)/ ){ m[ it[ 1 ] ] = it[ 2 ] }
assert m == [name:'James castle', age:'20']