Как бы вы получили значение ключа last_4 из этого хеша?
У меня есть одноразовый ответ от транзакции Square.Я передаю ответ через Ajax в Ruby, где он появляется в виде строки параметров.Iv'e пытался преобразовать строку в хеш.Я также попробовал JSON.parse.
Это фактический одноразовый ответ от транзакции с песочницей Square.Я урезал некоторые идентификаторы и заменил другие.Также я вставляю возврат каретки, чтобы сделать его более читабельным для человека:
{: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
Я пытался вытащить только идентификатор, который является первым вложенным ключом:
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, я могу сделать все остальное.
Спасибо.