Fa1*_*gel 36
如果您使用的是Groovy 1.8或更高版本,则可以使用以下方式在JsonSlurper中构建:
import groovy.json.JsonSlurper
//Attention: you have to use double quotes inside the json string
def jsonObj = new JsonSlurper().parseText( '{ "name":"Peter", "age": 23}' )
assert jsonObj.name == "Peter"
assert jsonObj.age == 23
//this won't work, because it's not defined
assert jsonObj.gender == null
Run Code Online (Sandbox Code Playgroud)
Dón*_*nal 13
因为已编译的Groovy类与Java类兼容,所以您应该能够使用任何Java库将JSON转换为POJO(或POGO).Jackson是一个相当受欢迎的选择,您可以使用它来转换JSON,如下所示:
String json = '{
"name" : { "first" : "Joe", "last" : "Sixpack" },
"gender" : "MALE",
"verified" : false,
"userImage" : "Rm9vYmFyIQ=="
}'
Run Code Online (Sandbox Code Playgroud)
到地图使用:
Map<String,Object> userData = mapper.readValue(json, Map.class)
Run Code Online (Sandbox Code Playgroud)
或者,如果要将JSON转换为Groovy User类:
User userData = mapper.readValue(json, User.class)
Run Code Online (Sandbox Code Playgroud)
这会将Groovy类中的属性映射到JSON中的键.
JSON-lib声称能够将POGO转换为JSON并返回.如果POGO意味着我的想法(Plain Old Groovy Object),那么你就设置了:).
他们给出了这个例子:
def strAsJsonObject = "{integer:1, bool: true}" as JSONObject
Run Code Online (Sandbox Code Playgroud)
更新:
我自己试过lib,这是完整的代码:
import net.sf.*;
import net.sf.json.*;
import net.sf.json.groovy.*;
println "hi"
GJson.enhanceClasses()
def strAsJsonObject = "{integer:1, bool: true}" as JSONObject
println strAsJsonObject
Run Code Online (Sandbox Code Playgroud)
它将通过下载依赖项(ezmorph,commons lang,commons logger)的马拉松追逐你,一旦你解决了所有问题,这就是你得到的:
线程"main"中的异常org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法将类'java.lang.String'的对象'{integer:1,bool:true}'强制转换为类'net.sf.json.的JSONObject"
根据邮件列表,你得到这个没有调用GJsonlib.enhanceClasses(),但我确实称之为,如上所述.
我的结论是,讨厌Groovy的JSON-lib是值得的.
| 归档时间: |
|
| 查看次数: |
36243 次 |
| 最近记录: |