2012-03-28 4 views
0

현재 해결책을 찾기 위해 머리카락을 찢어 내고 있습니다. 일부 Json을 구문 분석해야하지만 json gem은 2 단계 이상의 구문 분석을 허용하지 않으므로 각 블록을 많이해야합니다. 그리고 원하지 않는 데이터를 제거하기 위해 if/else를 수행해야합니다. 그래서 여기 는 내가하고 싶은 것입니다 :블록을 if 문의 매개 변수로 전달하는 방법은 무엇입니까?

result['person']['participation'].each do |participation| 

    if participation['movie']['release'] { |release| release['releaseState']['code'] == 3011 || release['releaseState']['code'] == nil } 
    next 
    else 
    puts title = participation['movie']['originalTitle'] 
    end 
end 

나는과 노력도하지만 난 문 블록을 전달할 수 없습니다 두려움 '하지 않는'. 그렇지 않다면, 내가 필요한 것을 할 수있는 방법이 있습니까?

감사합니다. 여기

http://api.allocine.fr/rest/v3/filmography?partner=YW5kcm9pZC12M3M&profile=medium&code=5568&filter=movie&format=json

+0

"2 단계 이상의 구문 분석을 허용하지 마십시오"는 의미는 무엇입니까? 파싱이 잘된 것 같습니다. –

+0

@SergioTulentsev +1 – Blacksad

+0

그냥 답이 낮습니다 :) Ruby에서 오류가 발생했습니다 – Simon

답변

1

나는 문서의 구조를 볼 필요가 JSON입니다 ...하지만 참여는 [ '영화'] [ '릴리스'] 배열, 당신은 Array#any?

result['person']['participation'].each do |participation| 

    if participation['movie']['release'].any? { |release| release['releaseState']['code'] == 3011 || release['releaseState']['code'] == nil } 
    next 
    else 
    puts title = participation['movie']['originalTitle'] 
    end 
end 
를 사용할 수있는 경우

배열이 아닌 경우 문서 예제를 게시하십시오.

+0

[ 'movie'] [ 'release'] 클래스를 삽입함으로써 해시임을 알 수 있습니다. json 이후 논리적 인 것 같습니다. – Simon

+0

[[movie '] [release]] ['releaseState '] ['code ']에 참여한다면 어떨까요? 나는 뭔가를 놓쳐 야한다. – Blacksad

+0

Ruby movie.rb에서 오류가 발생했습니다. 29 :'getFilmography의 블록 '에 : 정의되지 않은 메소드'[]'for nil : NilClass (NoMethodError) movie.rb : 28 :'each ' from movie.rb : 28 :'getFilmography '에서 movie.rb : 52 :'

'(getFilmography는 내 코드가있는 클래스입니다.) – Simon

관련 문제