2013-03-07 137 views
0

我想解析一個json文件到對象中,並將其保存到數據庫中。我只是創建一個在grails控制檯中運行的groovy腳本(在cmd行中輸入grails控制檯)。我沒有創建Grails應用程序或域類。在這個小劇本里,當我打電話保存時,我有groovy解析json並保存到數據庫

groovy.lang.MissingMethodException: No signature of method: Blog.save() 
    is applicable for argument types:() values: [] 
Possible solutions: wait(), any(), wait(long), isCase(java.lang.Object), 
    sleep(long), any(groovy.lang.Closure) 

我錯過了什麼嗎?
我也很困惑,如果我確實保存,是否會將數據保存到名爲Blog的表中?我應該在這裏建立任何數據庫連接? (因爲我grails領域類,我們不需要,但是它是不同的使用純groovy?)

很多謝謝!

import grails.converters.* 
import org.codehaus.groovy.grails.web.json.*; 

class Blog { 
    String title 
    String body 
static mapping = { 
    body type:"text" 
    attachment type:"text" 
} 

    Blog(title,body,slug){ 
    this.title = title 
    this.body=body 
    } 
} 

這裏解析JSON

// parse json 
List parsedList =JSON.parse(new FileInputStream("c:/ning-blogs.json"), "UTF-8") 

def blogs = parsedList.collect {JSONObject jsonObject -> 
    new Blog(jsonObject.get("title"),jsonObject.get("description"),"N/A"); 
} 

環博客,並保存每個對象

for (i in blogs){ 
    // println i.title; I'll get the information needed. 
    i.save(); 
} 
+0

你把'Blog'類放在哪裏? – 2013-03-07 08:11:34

+0

是'Blog'的Grails領域類嗎? 「Normal」類不會自動擁有「save」方法 – moeTi 2013-03-07 08:14:02

+0

謝謝,我沒有指定它是域類,我只是創建一個在grails控制檯中運行的groovy腳本。我可以指定它在groovy腳本內的某處嗎?我只是希望它可以在腳本內部運行。 – 2013-03-07 08:56:23

回答

0

我沒有與Grails的豐富經驗,而是從快速谷歌搜索似乎對於一個類被視爲模型類,它將需要在正確的convention-package/dir或legacy jar with hibernate mapping/JPA annotation上。因此你的例子不能工作。爲什麼不在模型包中定義該模型?