是否可以发送JSON并使用JAVA将其存储在Azure表中

时间:2016-07-28 06:28:03

标签: java azure azure-table-storage

我正在努力将数据存储在azure表中,同时我发现了对Azure表here的JSON支持。所以为了改变计划现在我有一个JSON格式的数据,我需要它存储在azure表上。我发现很少的代码片段,但都是针对c#。你能指导我吗?

先谢谢

2 个答案:

答案 0 :(得分:1)

Azure表存储是一个Key/Value对存储,而不是document存储(一个很好的例子就是DocumentDB)。本质上,表包含实体(通常将它们视为行),每个实体包含一些属性(通常将它们视为列)。每个属性由3个部分组成:属性名称(将是键/值对中的键),属性值(键/值对中的值)和属性数据类型。

要回答您的问题,是的,您可以将一个JSON文档存储在Azure表中,但它作为属性存在,因此您需要为JSON文档分配一个键。此外,每个属性的大小不能超过64KB,因此您需要考虑这一点。

如果您的要求是存储JSON文档,我建议您查看DocumentDB。它更适合存储JSON数据并执行Azure表无法执行的更多操作。

关于您对Azure表的JSON支持的评论,它讨论了从Azure表发送/检索数据的格式。在早些时候,数据是使用ATOM PUB XML格式传输的,这使得请求有效载荷/响应体非常庞大。使用JSON格式,大小会大大减少。但无论您采用哪种方式,Azure Tables都会以键/值对格式存储数据。

答案 1 :(得分:1)

@AnandDeshmukh,根据我的理解,我想你可能想用Java用C#编写类似的代码。我建议您可以尝试引用Azure Storage SDK的javadoc来重写Java中的示例代码。

例如,您可以使用Java代码而不是C#代码,如下所示。

C#代码:

CloudTableClient tableClient = new CloudTableClient(baseUri, cred)
{
     // Values supported can be AtomPub, Json, JsonFullMetadata or JsonNoMetadata
     PayloadFormat = TablePayloadFormat.JsonNoMetadata
};

Java代码:

CloudTableClient tableClient = new CloudTableClient(baseUri, cred)
tableClient.getDefaultRequestOptions().setTablePayloadFormat(TablePayloadFormat.JsonNoMetadata);