2017-10-11 10 views
0

私はクラスのサブスクライバ(親)とOptionsdetail(子)を持っています。彼らは1対1の関係を持っています。JSON Marshallerは表示する属性を指定します

クラスの加入者{

String picture 
String versionn 
String title 
String subtitle 
Integer guid 
Integer saleprice 
Integer msrp 
Integer costprice 
String saletype 
String category 
String storecategory 
String brand 
String condition 
String shipwithin 
String modelskucode 
String state 
String link 
String image 
String image2 
String image3 
String image4 
String description 
String publishdate 
Integer active 
Integer weight 
Integer quantity 
String shippingprice 
String whopay 
String shiptolocation 
String shippingmethod 
String paymentmethod 
String gsttype 
String optionsstatus 
Options options 
Optionsdetails optionsdetails 

下のクラスではあるがOptiondetails

class Optionsdetails { 
String sku 
String usersku 
Integer price 
Integer saleprice 
Integer msrp 
Integer costprice 
Integer quantity 
Integer warningqty 
String image1 
Integer status 
static belongTo = [subscriber: Subscriber] 

私は、これらのクラスからのみ特定の属性をレンダリングしたいので、私は以下のようにブートストラップでコードをした

class BootStrap { 
def init = { servletContext -> 
    JSON.registerObjectMarshaller(Subscriber) { 
     def returnArray = [:] 

     returnArray['title'] = it.title 
     returnArray['Id'] = it.guid 
     returnArray['description'] = it.description 
     returnArray['saletype'] = it.saletype 
     returnArray['options'] = ["optionName1": it.options.optionName1, "optionDetail1": it.options.optionDetail1] 
     returnArray['optionsdetails'] = it.optionsdetails.list() 
     return returnArray 
    } 

} 

クラスのサブスクライバ属性には問題ありませんでしたが、どのように表示するかをカスタマイズするにはfまたはクラスOptionsdetailsの属性例えば、私はそのIDを表示したくないので、表示された属性を手配したいと思います。以下は、JSONは

[ 
{ 
"title": "Female bag 2017 spring and summer new ladies shoulder bag wild shell small bag handbag female bag Messenger bag", 
"Id": 710, 
"description": "<font style=\"vertical-align: inherit;\"><font style=\"vertical-align: inherit;\">loading description...</font></font>", 
"saletype": "B", 
"options": { 
"optionName1": "Color", 
"optionDetail1": "Navy blue,light Grey,Taro purple,Deep purple,Dark gray,Pink,Light blue,Dark pink,black,Red wine," 
}, 
"optionsdetails": [ 
{ 
"id": 1, 
"costprice": null, 
"image1": "710.0", 
"msrp": null, 
"price": null, 
"quantity": 4561, 
"saleprice": null, 
"sku": "Navy blue", 
"status": 1, 
"usersku": null, 
"warningqty": 0 
}, 
{ 
"id": 2, 
"costprice": null, 
"image1": "710.0", 
"msrp": null, 
"price": null, 
"quantity": 4331, 
"saleprice": null, 
"sku": "light Grey", 
"status": 1, 
"usersku": null, 
"warningqty": 0 
}, 

をどのように見えるかです親切に案内してください。ありがとう

答えて

0

属性をカスタマイズするために、以下のようなOptionsdetails用に個別のregisterObjectMarshallerを作成する必要があることがわかりました。 問題を修正しました。

JSON.registerObjectMarshaller(Optionsdetails) { 
     def returnArray = [:] 

     returnArray['sku'] = it.sku 
     returnArray['usersku'] = it.usersku 
     returnArray['price'] = it.price 
     returnArray['saleprice'] = it.saleprice 
     return returnArray 
    } 
関連する問題