2012-07-24 3 views
1

다음과 같은 JSON이 있습니다. 나는 그것을 객체에 저장하고 읽는다. @items.Ruby on Rails로 객체 표시하기

[ 
{ 
    { 
    "id": "A", 
    "description": "a_description" 
    }, 
    { 
    "id": "B", 
    "description": "b_description" 
    } 
}, 
{ 
    { 
    "id": "A", 
    "description": "a_description" 
    }, 
    { 
    "id": "B", 
    "description": "b_description" 
    } 
} 
] 

내 목표는 두 개의 열, 하나의 라벨 A 및 각 행의 "a_description"및 "b_description"을 제공하는 다른 표지 된 B와 표를 표시 할 수있다. 이 일을 어떻게 수행해야할지 모르겠습니다. 이 같은

+0

+1. 그리고 나는 당신의 질문을 이해하지 못했습니다. items 배열에이 json이 채워져 있습니까? 또는 json이 있고 항목 배열을 채우고 싶습니까? – MurifoX

+0

파일에 json이 있습니다. 내가 이해 한대로, JSON을 읽을 때 아이템 배열을 얻는다. – rapidash

+0

전체 배열 아래의 첫 번째 하위 수준이 배열 []이 아닌 해시 {}가 아니어야합니다. – Ron

답변

2

아, 해시와 배열 문제의 해시의 팔자 '배열입니다.

{"A" : "foo", "B" : "bar" }

{ 
    "id": "A", 
    "description": "foo" 
}, 
{ 
    "id": "B", 
    "description": "bar" 
} 

을 변환 할 문제 "순서가"처음이 주위를 얻으려면.

@new_items = @items.map do |item| 
    output = {} 
    item.each do |hash| 
    output.merge!(hash["id"] => hash["description"]) 
    end 
end 

그런 다음 @new_items

[ 
    { 
    "A": "a1_description", 
    "B": "b1_description" 
    }, 
    { 
    "B": "b2_description", 
    "A": "a2_description" 
    } 
] 

이 거기에서, 각 라인은 단순히 해시 (해시 요소가 정렬되지 않기 때문에 의도적으로 순서가되게)된다, 그래서 당신은 단지 값을 역 참조하면 따라 필요한 수 칼럼에 당신은에있어.

@new_items.each do |item| 
    puts "#{item['A']} is paired with #{item['B']}" 
end 

키, 물론 당신은 하드 코드 "A"와을 사용하여 "B"로하지 않으려면 동적으로 검색 할 수있다

+0

이 솔루션이 마음에 들지만 항목에 세 번째 ID 인 "C"가 있으면 어떻게됩니까? – rapidash

+0

알려진 세 번째 ID입니까, 아니면 동적이거나 임의입니까? 나는 마지막 줄에 .keys 메서드를 사용하여 암시를했다. .values ​​메서드를 사용하여 비슷하게 모든 값의 배열을 얻을 수 있습니다 (해시이므로 순서가 맞지 않습니다). – Ron

2

뭔가 어쩌면

<tr><th>A</th><th>B</th></tr> 
<% @items.each do |item| %> 
    <tr><td><%=item[0].description%></td><td><%=item[1].description%></td></tr> 
<% end %> 
+0

이 작업은 가능하지만 배열 항목이 순서가 틀릴 수도 있습니다. ID를 확인해야하거나 잘못된 열에 항목을 가져올 수 있습니다. – rapidash

+0

예 - 이것이이 솔루션의 정확한 문제점입니다. 항목 중 어느 것도 예상 한 열과 일치하지 않으며 어떤 열이 끝나는 지 일관성이 없습니다. – rapidash

+0

@rapidash. 원하는 방식으로 데이터를 분석해야합니다. 항목을 반복하고 표시하기 전에 원하는대로 다시 구성하십시오. –

관련 문제