2010-04-01 29 views
6

Tôi đang cố gắng tạo JSON từ hai trường. Nói, tôi có một danh sách các đối tượng (bên), và tôi chỉ cần vượt qua 2 mục như cặp JSON.hiển thị JSON trong GRAILS với một phần thuộc tính của đối tượng

def list = getMyList() //it contains 2 party objects 
partyTo = array { 
    for (i in list) { 
     x partyId: i.id 
     y partyName: i.toString()   
    } 
} 

Chuỗi JSON là

{ 
    "partyTo": [ 
     {"partyId":12}, 
     {"partyName":"Ar"}, 
     {"partyId":9}, 
     {"partyName":"Sr"} 
    ] 
} 

khi tôi giải nén nó ở khách hàng, nó được coi là 4 đối tượng. Tôi muốn là 2 đối tượng, với định dạng dưới đây.

{ 
    "partyTo": [ 
     {"partyId":12, "partyName":"Ar"}, 
     {"partyId":9 , "partyName":"Sr"} 
    ] 
} 

Tôi nhận được 4 đối tượng, có thể vì tôi sử dụng mảng để tạo JSON. Tôi mới làm quen với JSON và JSON, vì vậy không chắc chắn về các kết hợp cú pháp đúng. Bất kỳ trợ giúp đánh giá cao. cảm ơn.

Trả lời

8

Bạn đang ở trong đó vấn đề là với việc xây dựng mảng của bạn. Để có được sản lượng yêu cầu bạn cần một loạt các bản đồ, một bản đồ cho từng đối tượng, và để có được những đối tượng tổng thể "partyTo" bạn cần phải thêm danh sách đó vào bản đồ khác:

def parties = [ 
      ["id":12 , "name":"Ar", "privateField": "a"], 
      ["id":9 , "name":"Sr", "privateField": "b"] 
    ] 

    def toRender = parties.collect { party-> 
     ["partyId": party.id, "partyName":party.name] 
    } 

    def result = ["partyTo" : toRender] 
    render result as JSON 

Nói cách khác, một Grails bản đồ biến thành đối tượng JSON và mảng và danh sách Grails trở thành mảng trong JSON

Nếu bạn luôn muốn hiển thị đối tượng "bên" như thế này, bạn có thể cân nhắc sử dụng ObjectMarshaller. Các chi tiết khác trong bài đăng này trên rendering JSON using object marshallers

+0

cảm ơn sự giúp đỡ của bạn .. Tôi đã tìm thấy bài đăng tương tự về ObjectMarshaller và đã làm việc tuyệt vời. Tôi vẫn tò mò về giải pháp trên. cảm ơn rất nhiều. Trân trọng. – bsr

Các vấn đề liên quan