DynamoDBのJSONサポートに対応しましたAWS特集DynamoDBSDK&Tools2015年02月04日せーの(269)65この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。こんにちは、せーのです。PHPがバージョンアップしましたのでご紹介致します。Marshaler」というクラスで実装されています。こちらは読んで字のごとくDynamoDBのitem形式のフォーマットでJSON形式のテキストとPHPのArray型の変換ができるようになるクラスです。こんなJSONファイルがあるとします。]}こちらはDynamoDBのitemに入るようなMap型[M]とList型[L]を表したJSONファイルとなります。こちらをMarshalerを使ってDynamoDBに取り込みます。$marshaler->marshalJson($json)]);簡単ですね。MarshalerクラスのmarshalJson()メソッドに突っ込むだけです。印象的にはjson_decode()のDynamo版、という感じですね。]],];という感じになります。綺麗にArrayに入りました。ちなみにキーの[S]はString、[N]はNumericですね。この対応が入るまではこのSとかNとかをいちいち指定したJSONを作らないといけませんでしたが、これでようやくスッキリ!ですね。元のJSONに戻す時はunmarshalJson()メソッドを使用します。$marshaler->unmarshalJson($result['Item']);うん、こちらもスッキリ!ですね。Array次に通常のPHPのArray型をDynamoDBのデータ型に落としこんだり、元に戻したりしてみましょう。こちらはそれぞれmarshalItem()メソッド、unmarshalItem()メソッドで実装されています。$marshaler->unmarshalItem($result['Item']);こちらは基本的にDynamoDbClient::formatAttributes()のアップグレードとなります。BS]には対応していない、ということです。こちらは型的にJSONに変換しづらい、ということがあるようです。こちらの型についてはバージョン3にて対応予定です。非推奨クラス今回のバージョンアップ対応にて同じようにArray型とDynamoDBItemの変換等をしていたAws\DynamoDb\DynamoDbClient::formatValue()Aws\DynamoDb\DynamoDbClient::formatAttributes()Aws\DynamoDb\DynamoDbClient\Model\AttributeAws\DynamoDb\DynamoDbClient\Model\ItemAws\DynamoDb\DynamoDbClient\Iterator\ItemIteratorこれらのクラスにつきましてはバージョン3にて削除が予定されています。こちらのクラスを使っている方は今回新しく入ったMarshaler()クラスに移行することをお勧めします。まとめいかがでしたでしょうか。DynamoDBのJSON対応自体は去年の10月にできてたのですが、先ほどのデータ型の指定をしなきゃいけない等、なかなか使いにくいものでしたが、これでひとまず使えるものになったのではないでしょうか。一度使ってみてください。2,694,773せーのと申します。北海道にて犬2匹とともにのんびりコードを書いたりしています。最近は触れるデバイスをネットにつなげて遊ぶのにはまっています。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。今日はオフィスに用があるので、通勤ラッシュを避けて出社しました。この子は新メンバーのさめくんです。在宅勤務が推奨されているのでオフィスが閑散としており、すこしさみしそうです。使いたいときの注意点を書きました。本が出ていたので読んでみたところよかったので紹介させていただきます。