gpt4 book ai didi

c# - 使用rest api将数据插入azure表存储时将odata类型插入json有效负载的最佳方法

转载 作者:行者123 更新时间:2023-12-03 02:50:08 25 4
gpt4 key购买 nike

当我使用azure表存储时Insert Entity api插入数据。

我的实体类中有一些类型,例如 dateTime,int 。根据此doc :默认情况下,属性将创建为 String 类型,除非您指定不同的类型。

所以我想知道将 odata 类型添加到 json 有效负载的最佳方法是什么?添加了 odata 类型的生成的 json 负载应如下所示:

enter image description here

而我目前的解决方案是,生成json字符串后,将其视为字符串,并将odata类型直接添加到json中。但我认为应该有更多更好的方法。

我的代码如下:

实体类:

public class MyClass
{

public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Name { get; set; }

public Guid TestId { get; set; }
}

主要方法:

        static void Main(string[] args)
{

string url_with_sasToken = "https://xxx.table.core.windows.net/ttt?sasToken";

MyClass entity = new MyClass
{
PartitionKey = "ivan2",
RowKey = "y1",
Name = "jack60",
TestId = Guid.NewGuid()
};

//here, I add the odata type for Guid type
string s = JsonConvert.SerializeObject(entity).Replace("}","");
s += ",\"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="60340513142904200f040114014e14191005" rel="noreferrer noopener nofollow">[email protected]</a>\"" + ":" + "\"Edm.Guid\"}";
Console.WriteLine(s);

var content = new StringContent(s, Encoding.UTF8, "application/json");

using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new
MediaTypeWithQualityHeaderValue("application/json"));
var t2 = client.PostAsync(url_with_sasToken , content).GetAwaiter().GetResult();
Console.WriteLine(t2.StatusCode);
}

}

最佳答案

恕我直言,更好的方法是利用 Reflection 并通过迭代类的公共(public)属性来动态创建 JSON。您只能选择表服务支持的属性类型(例如 Guid、DateTime 等)

这样,您就不必不断更改序列化代码来反射(reflect)类定义中的更改。无论如何,使用 + 符号进行字符串连接都是一个坏主意:)。

作为引用,您可以查看 Storage SDK 中 TableEntity 类的代码。我从 Github ( https://github.com/Azure/azure-storage-net/releases/tag/v9.3.2 ) 下载了 9.3.2 版的代码,因为这是 SDK 中支持 Table 的最后一个版本。

关于c# - 使用rest api将数据插入azure表存储时将odata类型插入json有效负载的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56594876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com