Groovy的 - 转换对象JSON字符串

Groovy的 - 转换对象JSON字符串

问题描述:

我敢用Grails的转换器,在那里你可以将任何对象转换为JSON表示,就像这样(http://grails.org/Converters+ReferenceGroovy的 - 转换对象JSON字符串

return foo as JSON 

但在普通常规,我无法找到一个简单的方法来做到这一点(http://groovy-lang.org/json.html

JSONObject.fromObject(this) 

返回空字符串JSON ...

我缺少一个明显的Groovy转换器? 或者我应该去杰克逊或gson库?

+0

本地的“常规性”不知道纯Java库(即在Java反射/ Java bean的工作库) –

你的意思是这样的:

import groovy.json.* 

class Me { 
    String name 
} 

def o = new Me(name: 'tim') 

println new JsonBuilder(o).toPrettyString() 
+1

这确实是加工。但是,疯狂的事情是,如果你指定“公共字符串名称”。如果您使用公共访问器,JsonBuilder似乎忽略它们... – Wavyx

+0

@Wavyx是的,那么它不会将它变成'metaClass.properties',所以不会被构建器拾取: -/ –

+0

好吧..其他难看的解决方案是 'def toJsonString(Boolean prettyPrint = false){ Map props = [:] def outObject = Publication.declaredFields.findAll {!it.synthetic && it.name!='props'} .collectEntries {v - > [(v.name):this [v.name]] } outObject Wavyx

您可以使用JsonBuilder了点。

示例代码:

import groovy.json.JsonBuilder 

class Person { 
    String name 
    String address 
} 

def o = new Person(name: 'John Doe', address: 'Texas') 

println new JsonBuilder(o).toPrettyString() 
+4

请考虑提供一个完整的答案,因为它比另一个站点的链接更有帮助。此链接不再有效。 – antonyh

我不能让其他的答案中的IntelliJ这样评价控制台内的工作...

groovy.json.JsonOutput.toJson(myObject) 

这工作得很好,但不幸的是

groovy.json.JsonOutput.prettyString(myObject) 

没有为我工作。

要得到它漂亮的印刷我不得不这样做......

groovy.json.JsonOutput.prettyPrint(groovy.json.JsonOutput.toJson(myObject))