Azure Blob 列表键 JsonSerializer.Deserialize 返回空 C#
Azure Blob list keys JsonSerializer.Deserialize returning null C#
我要进行一个非常简单的反序列化。基本上我所做的就是检索以下 json 并反序列化为 Microsoft.Azure.Management.Storage.Models
的 StorageAccountListKeysResult
:
{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key1\",\"value\":\"qzyyzfNe1bkhBeOVYNXiQ6BjVlDnLsnDWhVqhTrD6whPE78kf/1A/jNeQsUjMvQVnl3dtdKxZmsuMjlx3ru7Q==\",\"permissions\":\"FULL\"},{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key2\",\"value\":\"t+4ao7yMyWvqoiSjrNCH5gPtDC7+Qnow2SdPoFXzOXkPyBrOex/BVUPXtGFW78XAXrQ7ITDZnC8RIyXe5jVaQ==\",\"permissions\":\"FULL\"}
我多次检查了 json 结果并与模型进行了比较,对我来说似乎一切都很好,但我得到 null
作为反序列化的结果。
代码如下:
var serializerOptions = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
var json = "{\"Keys\":[{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key1\",\"value\":\"qzyyzfNe1bkhBeOVYNXiQ6BjVlDnLsnDWhVqhTrD6whPE78kf/1A/jNeQsUjMvQVnl3dtdKxZmsuMjlx3ru7Q==\",\"permissions\":\"FULL\"},{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key2\",\"value\":\"t+4a7oyMyWvqoiSjrNCH5gPtDC7+Qnow2SdPoFXzOXkPyBrOex/BVUPXtGFW78XAXrQ7ITDZnC8RIyXe5jVaQ==\",\"permissions\":\"FULL\"}]}";
var listKeys = JsonSerializer.Deserialize<StorageAccountListKeysResult>(json, serializerOptions); // returns null
我错过了什么?
编辑:
我刚刚意识到 StorageAccountListKeysResult
的属性没有 setter。
请尝试将 JSON 中的 Keys
属性更改为 keys
。您的 json
应如下所示:
var json = "{\"keys\":[{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key1\",\"value\":\"qzyyzfNe1bkhBeOVYNXiQ6BjVlDnLsnDWhVqhTrD6whPE78kf/1A/jNeQsUjMvQVnl3dtdKxZmsuMjlx3ru7Q==\",\"permissions\":\"FULL\"},{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key2\",\"value\":\"t+4a7oyMyWvqoiSjrNCH5gPtDC7+Qnow2SdPoFXzOXkPyBrOex/BVUPXtGFW78XAXrQ7ITDZnC8RIyXe5jVaQ==\",\"permissions\":\"FULL\"}]}";
[Newtonsoft.Json.JsonProperty(PropertyName="keys")]
public System.Collections.Generic.IList<Microsoft.Azure.Management.Storage.Models.StorageAccountKey> Keys { get; }
问题已通过 Newtonsoft
解决。 Microsoft 使用 Newtonsoft StorageAccountListKeysResult
,所以我想这就是问题所在。
我要进行一个非常简单的反序列化。基本上我所做的就是检索以下 json 并反序列化为 Microsoft.Azure.Management.Storage.Models
的 StorageAccountListKeysResult
:
{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key1\",\"value\":\"qzyyzfNe1bkhBeOVYNXiQ6BjVlDnLsnDWhVqhTrD6whPE78kf/1A/jNeQsUjMvQVnl3dtdKxZmsuMjlx3ru7Q==\",\"permissions\":\"FULL\"},{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key2\",\"value\":\"t+4ao7yMyWvqoiSjrNCH5gPtDC7+Qnow2SdPoFXzOXkPyBrOex/BVUPXtGFW78XAXrQ7ITDZnC8RIyXe5jVaQ==\",\"permissions\":\"FULL\"}
我多次检查了 json 结果并与模型进行了比较,对我来说似乎一切都很好,但我得到 null
作为反序列化的结果。
代码如下:
var serializerOptions = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
var json = "{\"Keys\":[{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key1\",\"value\":\"qzyyzfNe1bkhBeOVYNXiQ6BjVlDnLsnDWhVqhTrD6whPE78kf/1A/jNeQsUjMvQVnl3dtdKxZmsuMjlx3ru7Q==\",\"permissions\":\"FULL\"},{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key2\",\"value\":\"t+4a7oyMyWvqoiSjrNCH5gPtDC7+Qnow2SdPoFXzOXkPyBrOex/BVUPXtGFW78XAXrQ7ITDZnC8RIyXe5jVaQ==\",\"permissions\":\"FULL\"}]}";
var listKeys = JsonSerializer.Deserialize<StorageAccountListKeysResult>(json, serializerOptions); // returns null
我错过了什么?
编辑:
我刚刚意识到 StorageAccountListKeysResult
的属性没有 setter。
请尝试将 JSON 中的 Keys
属性更改为 keys
。您的 json
应如下所示:
var json = "{\"keys\":[{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key1\",\"value\":\"qzyyzfNe1bkhBeOVYNXiQ6BjVlDnLsnDWhVqhTrD6whPE78kf/1A/jNeQsUjMvQVnl3dtdKxZmsuMjlx3ru7Q==\",\"permissions\":\"FULL\"},{\"creationTime\":\"2021-12-17T12:26:19.5708372Z\",\"keyName\":\"key2\",\"value\":\"t+4a7oyMyWvqoiSjrNCH5gPtDC7+Qnow2SdPoFXzOXkPyBrOex/BVUPXtGFW78XAXrQ7ITDZnC8RIyXe5jVaQ==\",\"permissions\":\"FULL\"}]}";
[Newtonsoft.Json.JsonProperty(PropertyName="keys")]
public System.Collections.Generic.IList<Microsoft.Azure.Management.Storage.Models.StorageAccountKey> Keys { get; }
问题已通过 Newtonsoft
解决。 Microsoft 使用 Newtonsoft StorageAccountListKeysResult
,所以我想这就是问题所在。