Ruby:接收和打印JSON对象



我想使用Ruby接收一个JSON对象。我写过:

require 'sinatra'
require 'json'
post '/' do
  push = JSON.parse(params[:payload])
  "I got some JSON: #{push.inspect}"
end

我发送:

var options = {
                  host: 'localhost',
                  port: 4567,
                  path: '/',
                  method: 'POST'
                };
var myFirstJSON = { "payload" : { "headers" : 
                                            [{ "from" : from,
                                                "to"  : to,
                                                "subject" : subject }],
                                "body"    : 
                                            [{ "primeira_parte" : primeira_parte,
                                                "segunda_parte" : segunda_parte,
                                                "terceira_parte": terceira_parte }]
                                }};
            req.write(JSON.stringify(myFirstJSON));

然而,我得到这个错误:

TypeError - can't convert nil into String:

{"{"payload":{"headers":"=>{"{"from":"test@test.com","to":"test@test.com","subject":"Testing"}"=>{","body":"=>{"{"primeira_parte":"The following message to <test@test.com> was undeliverable.\r\nThe reason for the problem:\r\n5.1.0 - Unknown address error 553-'sorry, this recipient is not in my valid"=>"\r\nrcptto list (#5.7.1)'","segunda_parte":"Final-Recipient: rfc822"}}}, "test@test.com\r\nAction: failed\r\nStatus: 5.0.0 (permanent failure)\r\nRemote-MTA: dns"=>nil, "216.75.35.163"=>{"\r\nDiagnostic-Code: smtp"=>nil}, "5.1.0 - Unknown address error 553-'sorry, this recipient is not in my validrcptto list (#5.7.1)' (delivery attempts: 0)","terceira_parte":"Received: from unknown (HELO aws-bacon-delivery-svc-iad-1020.vdc.amazon.com) ("=>{"10.144.21.123"=>{")\r\n  by na-mm-outgoing-6102-bacon.iad6.amazon.com with ESMTP"=>nil}}, "16 Apr 2011 14:11:15  0000\r\nReturn-Path: 0000012f5eb1cab3-09564031-57ef-4136-8cd7-9f368c5acd7d-000000@email-bounces.amazonses.com\r\nDate: Sat, 16 Apr 2011 14:23:20  0000\r\nFrom: tiago@tiagop.org\r\nTo: test@test.com\r\nMessage-ID: <0000012f5eb1cab3-09564031-57ef-4136-8cd7-9f368c5acd7d-000000@email.amazonses.com>\r\nSubject: Testing\r\nMime-Version: 1.0\r\nContent-Type: text/plain"=>nil, "\r\n charset"=>"UTF-8\r\nContent-Transfer-Encoding: 7bit\r\nX-AWS-Outgoing: 199.255.192.79\r\n\r\n<html><body><p> Helllooo </p></body></html>\r\n\r\n"}]}}"}

你想要的路由是这样的:

post '/' do
  push = JSON.parse(request.body.read)
  "I got JSON: #{push.inspect}"
end

您没有对数据进行格式编码,因此它不会在params中设置。

相关内容

  • 没有找到相关文章

最新更新