本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon DynamoDB 中的 JSON 支援
注意
本主題中的資訊特定於以 .NET Framework 和 3.3 AWS SDK for .NET 版及更早版本為基礎的專案。
使用 Amazon DynamoDB 時, AWS SDK for .NET 支援 JSON 資料。這可讓您更輕鬆地從 DynamoDB 資料表中取得 JSON 格式的資料,並將 JSON 文件插入其中。
從 JSON 格式的 DynamoDB 料表取得資料
下列範例顯示如何從 JSON 格式的 DynamoDB 資料表取得資料:
// using Amazon.DynamoDBv2; // using Amazon.DynamoDBv2.DocumentModel; var client = new AmazonDynamoDBClient(); var table = Table.LoadTable(client, "AnimalsInventory"); var item = table.GetItem(3, "Horse"); var jsonText = item.ToJson(); Console.Write(jsonText); // Output: // {"Name":"Shadow","Type":"Horse","Id":3} var jsonPrettyText = item.ToJsonPretty(); Console.WriteLine(jsonPrettyText); // Output: // { // "Name" : "Shadow", // "Type" : "Horse", // "Id" : 3 // }
在上述範例中,Document
類別的 ToJson
方法將某個項目從資料表轉換到 JSON 格式字串。該項目透過 Table
類別的 GetItem
方法擷取。若要決定要取得的項目,在此範例中,GetItem
方法會使用目標項目的 hash-and-range 主索引鍵。若要決定要從中取得項目的表格,Table
類別的LoadTable
方法會使用類別的執行個體以及 DynamoDB 中目標資料表的名稱。AmazonDynamoDBClient
將 JSON 格式資料插入 DynamoDB 資料表
下列範例示範如何使用 JSON 格式將項目插入 DynamoDB 資料表:
// using Amazon.DynamoDBv2; // using Amazon.DynamoDBv2.DocumentModel; var client = new AmazonDynamoDBClient(); var table = Table.LoadTable(client, "AnimalsInventory"); var jsonText = "{\"Id\":6,\"Type\":\"Bird\",\"Name\":\"Tweety\"}"; var item = Document.FromJson(jsonText); table.PutItem(item);
在上述範例中,Document
類別的 FromJson
方法將 JSON 格式字串轉換到項目。項目是透過 Table
類別的 PutItem
方法插入到資料表中,其使用包含項目的 Document
類別的執行個體。若要決定要插入項目的資料表,會呼叫Table
類別的LoadTable
方法,並指定類AmazonDynamoDBClient
別的執行個體以及 DynamoDB 中目標資料表的名稱。
DynamoDB 資料類型轉換為 JSON
每當您呼叫Document
類別的ToJson
方法,然後在產生的 JSON 資料上呼叫將 JSON 資料轉換回類Document
別執行個體的FromJson
方法時,某些 DynamoDB 資料類型將無法如預期般轉換。具體而言:
-
DynamoDB 集合 (
SS
NS
、和BS
類型) 將會轉換為 JSON 陣列。 -
DynamoDB 二進位純量和集合 (
B
和BS
類型) 會轉換為 base64 編碼的 JSON 字串或字串清單。在此案例中,您必須呼叫的
Document
類別的DecodeBase64Attributes
方法,使用正確的二進位代碼取代以 base64 編碼的 JSON 資料。在以下範例中,在名為Picture
之Document
類別的執行個體中,使用正確的二進位代碼取代以 base64 編碼的二進位純量項目屬性。此範例也在名為RelatedPictures
之Document
類別的相同執行個體中,針對以 base64 編碼的二進位集項目屬性進行目同操作:item.DecodeBase64Attributes("Picture", "RelatedPictures");
詳細資訊
如需使用 DynamoDB 對 JSON 進行程式設計的詳細資訊和範例 AWS SDK for .NET,請參閱: