나는 레일 3 응용 프로그램이 있고 내가 JSON 게시물을 구문 분석하려면 다음 코드를 사용하고 있습니다 :구문 분석 포함 된 문자열 형식의 JSON
email_payload = JSON.parse(params[:payload])
Result.create(:from => email_payload['from'], :from_name => email_payload['from_name'], :from_address => email_payload['from_address'], :date => email_payload['date'], :html_body => email_payload['html_body'], :priority => email_payload['priority'], :spam_status => email_payload['spam_status'], :subject => email_payload['subject'])
json으로 게시 데이터는 다음과 같다 :
payload{ "address_identifier": null, "attachments": [ [ "twitter.png", "image/png", 3029, "http://api.deliverhq.com/api/incoming/attachment/7gdd71wo75/5772412/0" ] ], "cc": null, "date": "Thu, 25 Oct 2012 22:04:20 +0100"
I을 URL을 구문 분석 (이 경우 http://api.deliverhq.com/api/incoming/attachment/7gdd71wo75/5772412/0
)하는 방법을 알아 내려고 URL을 데이터베이스에 입력하십시오. URL이 식별자를 가지고 있지 않기 때문에
email_attachments_payload = JSON.parse(params[:payload][:attachments])
:url => email_attachments_payload['URL']
가 작동하지 않습니다 여러 첨부 파일 내에서 값을가 있기 때문에
:url => email_payload['attachments']
이 작동하지 않습니다. 이 특정 응용 프로그램의 경우 첨부 파일이 하나만 있어야하므로 가능하면 .first를 선택하는 것이 좋습니다.
모든 포인터가 감사하겠습니다!
UPDATE :
추가 : 다음과 같은 예외 오류
email_payload[:attachments][0][4]
결과
NoMethodError: undefined method []' for nil:NilClass
UPDATE 2
def receive_fax
if request.get?
render :text => "hello"
elsif request.post?
email_payload = JSON.parse(params[:payload])
Fax.create(:from => email_payload['from'], :from_name => email_payload['from_name'], :from_address => email_payload['from_address'], :date => email_payload['date'], :html_body => email_payload['html_body'], :priority => email_payload['priority'], :spam_status => email_payload['spam_status'], :subject => email_payload['subject'], :fax => email_payload[:attachments][0][3])
render :text => "success"
else
render :text => "error"
end
end
0,123,516을 IRB에서
'첨부 파일'과 '첨부 파일'사이를 전환하는 것 같습니다. 단수입니까 복수입니까? –
죄송합니다. 복수형입니다. – dannymcc
'email_payload [: attachments]'는 4 요소 배열을 가진 1 요소 배열이고, 마지막 요소는 URL입니다. 당신이 원하는 것은 그 URL을 얻는 것입니다. 'email_payload [: attachments] [0] [4]'를 사용할 수 없습니까? 그렇지 않다면 제약 조건에 대해 좀 더 구체적이어야합니다. –