Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在ruby中解码Amazon QLDB的ion_二进制_Ruby On Rails_Ruby_Amazon Web Services_Aws Sdk_Amazon Qldb - Fatal编程技术网

Ruby on rails 如何在ruby中解码Amazon QLDB的ion_二进制

Ruby on rails 如何在ruby中解码Amazon QLDB的ion_二进制,ruby-on-rails,ruby,amazon-web-services,aws-sdk,amazon-qldb,Ruby On Rails,Ruby,Amazon Web Services,Aws Sdk,Amazon Qldb,我用ruby玩Amazon的QLDB,并使用aws sdk QLDB和aws sdk QLDSessiongem。我得到的结果是IonBinary。但无法解码和解析它 下面是代码 cred = Aws::Credentials.new(ENV['AWS_ACCESS_KEY'], ENV['AWS_SECRET_ACCESS_KEY']) qldb_session_client = Aws::QLDBSession::Client.new(region: 'ap-so

我用ruby玩Amazon的QLDB,并使用aws sdk QLDBaws sdk QLDSessiongem。我得到的结果是IonBinary。但无法解码和解析它

下面是代码


      cred = Aws::Credentials.new(ENV['AWS_ACCESS_KEY'], ENV['AWS_SECRET_ACCESS_KEY'])

      qldb_session_client = Aws::QLDBSession::Client.new(region: 'ap-southeast-1', credentials: cred)

      start_session_req = Aws::QLDBSession::Types::StartSessionRequest.new
      start_session_req.ledger_name = 'ledger-test'


      command_request = Aws::QLDBSession::Types::SendCommandRequest.new

      command_request.start_session = start_session_req

      resp = qldb_session_client.send_command(command_request)
      session_token = resp.start_session.session_token

      command_request = Aws::QLDBSession::Types::SendCommandRequest.new
      command_request.session_token = session_token
      command_request.start_transaction = Aws::QLDBSession::Types::StartTransactionRequest.new
      resp = qldb_session_client.send_command(command_request)
      transaction_id = resp.start_transaction.transaction_id

      command_request = Aws::QLDBSession::Types::SendCommandRequest.new
      command_request.session_token = session_token
      command_request.execute_statement = Aws::QLDBSession::Types::ExecuteStatementRequest.new
      command_request.execute_statement.transaction_id = transaction_id
      command_request.execute_statement.statement = 'select * from testing'

      resp = qldb_session_client.send_command(command_request)


现在如果我使用下面的代码

resp.execute_statement.first_page.values[0]
我明白了

{:ion_binary=>"\xE0\x01\x00\xEA\xEE\x9A\x81\x83\xDE\x96\x87\xBE\x93\x89firstname\x88lastname\xDE\x9D\x8A\x8Dtesting first\x8B\x8Ctesting last", :ion_text=>"[FILTERED]"}


我无法使用二进制解析器对这个ion_二进制文件进行解码。

对流进行解码很可能需要使用。这就是说,有点像下面应该工作

Aws::EventStream::Decoder.new.decode( StringIO.new(结果[:离子\二进制]) )
解码到什么?这是一个完全有效的二进制文件。@AlekseiMatiushkin谢谢你的消息。此二进制文件包含中间的字符串。它应该返回firstname:testing first lastname:testing last这一个是AWS ION Binary([)。我使用了各种解包选项来解包这一个。但是工作不正常。然后我们必须解析它。ION_text也应该返回纯文本,但在本例中它也返回nil。
{firstname:'testing first',last name:'testing last'}
谢谢..在这之前我已经这样做了,实际上为#'引发了一个错误
未定义的方法
read','好的,它需要
IO
→ 把你的字符串包起来。我会更新答案。@alekesei谢谢。现在我得到的是可枚举的,但是当我遍历可枚举的时候,它返回了nil。但至少我得到的是可枚举的。在我发布的链接中,它声明了
decode
返回
可枚举的
。你说“它返回
nil
”是什么意思?此可枚举的元素数是多少?感谢您的帮助。主要是sdk gem中的问题。可枚举的元素数为零。我们已将该元素发布到sdk的GitHub页面。他们正在调查。