2016-03-02 172 views
0

我有一個對象(Institution),我想要使用JSON獲取與此對象關聯的2個數組(標記和附件)。在JSON中獲取嵌套數組

要清楚:對於1個機構,我有3個標記,每個標記都有一個附件。

這是我的JSON文件的代碼:

if @data['admin_institution'] 
    json.extract! @data['admin_institution'], :id, :name, :phone, :address, :site, :created_at, :updated_at 
    if @data['admin_institution'].marks 
     json.marks @data['admin_institution'].marks 
     json.array!(@data['admin_institution'].marks) do | admin_mark| 
      json.attachment admin_mark.attachment 
     end 
    end 

else 
    json.set! :response do 
     json.set! :error, 'Not Found!' 
    end 
end 

我想複製這樣的事情:

{ 
    id: 14, 
    name: "Ins3", 
    phone: "793215-2555", 
    address: "lreewrwklkr", 
    site: "lkerlke.com", 
    created_at: "2016-03-01T14:00:37.000-03:00", 
    updated_at: "2016-03-01T14:00:37.000-03:00", 
    - marks: [ 
     - { 
      id: 17, 
      admin_attachment_id: 927, 
      admin_bookmark_id: 3, 
      admin_institution_id: 14, 
      created_at: "2016-03-01T14:00:37.000-03:00", 
      updated_at: "2016-03-01T14:00:37.000-03:00" 
     }, 
     { 
      id: 18, 
      admin_attachment_id: 945, 
      admin_bookmark_id: 1, 
      admin_institution_id: 14, 
      created_at: "2016-03-01T14:00:37.000-03:00", 
      updated_at: "2016-03-01T14:00:37.000-03:00" 
     } 
     ], 
    - attachment: { 
     id: 927, 
     name: "nature-16", 
     title: "Nature-16", 
     description: null, 
     mime_type: "image/jpeg", 
     url: "/uploads/nature-16.jpg", 
     created_at: "2016-02-29T09:21:09.000-03:00", 
     updated_at: "2016-02-29T09:21:09.000-03:00" 
    } 
} 

相反,我得到最後array(附件)只值。提前致謝。

UPDATE:

我用我的機構模型through-association然後我可以通過標記「直接」獲得的附件,沒有做標記的loop。以下code給我幾乎所有我想要的。

if @data['admin_institution'] 
    json.extract! @data['admin_institution'], :id, :name, :phone, :address, :site, :created_at, :updated_at, :marks, :attachments 

else 
    json.set! :response do 
     json.set! :error, 'Not Found!' 
    end 
end 

它返回的機構,標記和附件,沒有嵌套。我要在機構內部標記和標記內的附件。我怎樣才能使它工作?

+0

我用'jbuilder'生成JSON結構。 –

+0

那麼?我也在使用。 – developer033

回答

0

試試這個:

if @data['admin_institution'] 
    ... 
    if @data['admin_institution'].marks 
     json.marks @data['admin_institution'].marks do | admin_mark| 
      json.attachment admin_mark.attachment 
     end 
    end 

else 
    ... 
end 
+0

感謝您的回覆,但分數並未達到。 ' { ID:15, 名稱: 「kjerkerkjer」, 電話: 「793215-2555」, 地址: 「kjasdkjadkjaskjd」, 網站: 「oedkf.com」, created_at:「2016-03-02T11 :15:15.000-03:00" , 的updated_at: 「2016-03-02T11:15:15.000-03:00」, 標記:[ { 附件:{ ID:1101, 名:「以自然24" , 標題: 「自然-24」, 描述:空, MIME_TYPE: 「圖像/ JPEG」, URL: 「/uploads/nature-24.jpg」, admin_attachment_id:空, admin_image_size_id:空, created_at: 「2016-03-02T11:06:10.000-03:00」, 的updated_at: 「2016-03-02T11:06:10.000-03:00」 } } ] } ' – developer033

+0

@ developer033檢查你的if子句。 –

+0

我的'if'語句沒有錯誤,我已經刪除它來查看會發生什麼,但沒有任何變化。 'JSON'只是返回機構和商標。 – developer033