1
不知道如何從控制器中提取JSON中的數組。我有一個JSON對象,它包含一個包含產品數組的訂單。 JSON嵌套像這樣,但爲了簡潔起見,我減少了許多字段。嵌入式數組保存在控制器中的JSON對象
{ "customerId": "23", "customerName": "Johnson",
"products":[
{
"productId": "1",
"finalPrice": "1.00"
},
{
"productId": "2",
"finalPrice": "2.00"
},
{
"productId": "3",
"finalPrice": "3.00"
}
]}
然後我有一個控制器代碼,需要把它解析並保存到兩個表...訂單和訂單產品。這是我迄今爲止,但它不是正確的一些如何必須採取投入和循環每個項目和保存。
class OrdersController {
def save = {
def input = request.JSON
def order = new Orders(input)
order.save(flush:true)
// Somehow I have to loop this for each item in array???
def products = new OrdersProducts(input)
products.ordersId = order.id
products.save(flush:true)
// ???????
}
}
----------我的解決方案----------
服用答案從下面並修改它適合我的特殊需要,(後傳統的數據庫結構),這是我做的手動插入每個產品:
OrdersController.groovy
import grails.converters.JSON
import grails.converters.XML
class OrdersController {
def save = {
def i
def input = request.JSON
def order = new Orders(input)
if (order.save(failOnError:true)) {
for (def products: input.ordersProducts) {
def prod = new OrdersProducts(products)
prod.ordersId = order.id
if (prod.save(failOnError:true)) {
//
} else {
prod.errors.allErrors.each { println it }
}
}
} else {
order.errors.each { println it }
}
}
}
不幸的是它的舊的數據庫,並通過兩個領域的聯繫。所以我必須手動執行此操作。 – JPM 2012-03-18 17:25:22
在您的「訂單」類中,您可以使用'hasMany'將其與'OrdersProduct'相關聯。如果這是不可行的,你可以通過循環,j.products.each {new OrderProducts(it)} – aldrin 2012-03-18 17:55:28
仍然失去了如何循環這一點,即使你的grails.converters.JSON.parse錯誤與「沒有方法的簽名:static grails.converters.JSON.parse()適用於參數類型:(org.codehaus.groovy.grails.web.json.JSONObject「。爲什麼使用Grails我想做一些簡單的事情,它從來不簡單。 – JPM 2012-03-19 15:17:35