你如何从这个哈希中获得last_4键的值?
我有一个Square事务的响应nonce。我将响应通过Ajax传递给Ruby,它作为参数字符串出现。我试过将字符串转换为哈希值。我也试过JSON.parse。
这是Square沙箱事务中的实际响应nonce。我已经截断了一些ID并替换了其他ID。此外,我放入回车,使其更具人性化:
{:transaction=>{
:id=>"smqfzS00qbp1lOy...",
:location_id=>"CBASE...",
:created_at=>"2019-02-19T19:45:18Z",
:tenders=>[{
:id=>"34670bfa-9d09-406a-910c-9c3e8ab82321",
:location_id=>"CBASE...",
:transaction_id=>"smqfzS00qbp1lOy...",
:created_at=>"2019-02-19T19:45:18Z",
:note=>"Online Transaction",
:amount_money=>{
:amount=>65000,
:currency=>"USD"
},
:type=>"CARD",
:card_details=>{
:status=>"CAPTURED",
:card=>{
:card_brand=>"VISA",
:last_4=>"9999",
:fingerprint=>"22737c9b012a..."
},
:entry_method=>"KEYED"
}
}],
:product=>"EXTERNAL_API"
}
}
我把它作为ajax调用的字符串并将其转换为哈希或解析它:
sqresp = Hash.new(square_resp) # this works
sqresp = JSON.parse(square_resp) # this fails
我试过拔出id,这是第一个嵌套键:
sqresp[:transaction] # this works but I get the whole string
但是,如果我更深入,它会失败:
sqresp[:transaction][:id] # this fails
sqresp[:transaction[:id]] # kinda makes sense but fails
sqresp[:transaction][:tenders][:amount_money][:card_details][:card][:last_4] # of course this fails too,it's just a deeper scrape.
有一个Ruby方法可以打破所有Square键/值会很棒,但是有一个如何拉出last_4的例子,我可以做其余的事情。
谢谢。
卡里,那工作!
sqresp = instance_eval(square_resp)
sqresp[:transaction][:tenders].first[:card_details][:card][:last_4]
谢谢!没有选择投票给你的评论。