2016-08-22 118 views
0

我试图从JSON字符串中输入值到DynamoDB中,其中一个值是二进制。例如,binaryString ='AAAcd'。我希望'AAAcd'是DynamoDB条目中的二进制文件,但是当我将该字符串转换为二进制文件并将其放入一个项目中时,由于编码原因该值已更改。例如,DynamoDB中的项目将为'Qha = e'如何将DynamoDB中的二进制值设置为'AAAcd'?从字符串中输入DynamoDB中的二进制文件

String binary = "AAAcd"; 
    byte[] bytes = binary.getBytes(); 
    Item item = new Item(); 
    item.withBinary("binary_col", bytes); 

以上所述,“binary_col”下的值不是“AAAcd”,而是“Qha = e”。

+1

显示您的代码。 –

+0

你在哪里看到值为“Qha = e”。您是否使用Java API从数据库获取数据并在控制台中打印?我试过了,它对我来说工作得很好。另外,如果您已正确定义数据类型,则应在DynamoDB中将数据类型看作“B”。 – notionquest

+0

我的回答有用吗?如果有帮助,我可以请求您接受我的回答吗? – notionquest

回答

1

将数据转换为如下所示的字符串并检查结果。您应该将该值看作“AAAcd”。

简短的回答: -

String binaryDataAsString = new String (item.getBinary("binary_col"));    
System.out.println("Binary data as string ====================>" + binaryDataAsString); 

仅供参考: -

public Boolean getAutoTableDataWithoutMapper(String autoId) { 

    DynamoDB dynamoDB = new DynamoDB(dynamoDBClient); 

    Table table = dynamoDB.getTable("autotable"); 

    ItemCollection<QueryOutcome> items = null; 

    QuerySpec querySpec = new QuerySpec(); 

    querySpec.withKeyConditionExpression("autoID = :val1").withValueMap(new ValueMap().withString(":val1", autoId)); 
    items = table.query(querySpec); 

    Iterator<Item> iterator = items.iterator(); 

    while (iterator.hasNext()) { 
     Item itemData = iterator.next(); 

     System.out.println("Json data ====================>" + itemData.toJSONPretty()); 
     System.out.println("Binary data ====================>" + itemData.getBinary("binaryData")); 

     String binaryDataAsString = new String(itemData.getBinary("binaryData")); 

     System.out.println("Binary data as string ====================>" + binaryDataAsString); 

    } 

    return true; 

} 

输出: - 请看 “二进制数据串”。该字符串显示正确。

如果您查看Json数据,则会显示您的问题中提到的值(即“QUFBY2Q =”)。

Json data ====================>{ 
    "binaryData" : "QUFBY2Q=", 
    "autoID" : "fge", 
    "alexandriaID" : "122" 
} 
Binary data ====================>[[email protected] 
Binary data as string ====================>AAAcd