2012-12-14 24 views
2

對於一個奇怪的情況,這是一種奇怪的問題。我有一個很大的JSON結構,我想在運行groovy代碼時表示。我需要反射與JSON對象相同結構的groovy對象。從Json轉換成groovy代碼?

正如所預期的web搜索大多返回結果與常規/ JSON運行時轉換的東西,但沒有有關的事情,輸出Groovy代碼。

你可能認爲這懶但實際上它是一個巨大的JSON結構!一個轉換器可以節省數日!

+0

可以使用常規的JSON對象的實例,就像一個普通的常規對象。或者你想要輸入對象? – Will

+0

你可以重申「當然搜索查詢只填補了運行時轉換的東西正常groovy json對象。」?無法解析該句子。 –

+0

@威P是理想情況下,我想要輸入常規代碼 – barrymac

回答

3

您可以使用Groovy自己JsonSlurper解析JSON對象:

import groovy.json.* 

def json = '{"name":"john", "surname":"doe", "languages": ["groovy", "python"]}' 

def obj = new JsonSlurper().parseText(json) 

assert obj.name == "john" 
assert obj.surname == "doe" 

assert obj.languages.containsAll("python", "groovy") 

當然類是無類型:它是隻在運行時才知道。如果你希望它是類型化的,你可以寫一個寫入基於一個示例代碼代碼(因爲json schema可能是罕見的)。

編輯:如果你想生成模型類的代碼,你可以嘗試JSONGen,其中「解析JSON創建客戶端源文件的JSON數據結構模型」。我沒有意識到Groovy的解決方案,但由於java-groovy集成是無縫的,所以它應該可以正常工作。

+0

優秀的,看起來像解決方案,迫不及待地嘗試! – barrymac

-2

嘗試使用JSON解析器像this one。據其文檔,你只需要做

JSON.parse 

反序列化數據

1

如果你想你的JSON的Groovy的表現,你可以得到通過內置JsonSlurper。這將爲您提供可以使用的Java地圖和數據列表。

您可以使用(第三方)Jackson的data binding functionality(另請參閱this question)填充您編寫的代表您的JSON實體的更具體的自定義對象。