Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用RestSharp生成json密钥作为snake_大小写_C#_Asp.net Core_Restsharp - Fatal编程技术网

C# 使用RestSharp生成json密钥作为snake_大小写

C# 使用RestSharp生成json密钥作为snake_大小写,c#,asp.net-core,restsharp,C#,Asp.net Core,Restsharp,您知道如何使用RestSharp生成json密钥作为snake\u case 使用Newtonsoft.Json,我可以像这样设置Json输出 DefaultContractResolver contractResolver=新的DefaultContractResolver { NamingStrategy=新的蛇案例NamingStrategy() }; string json=JsonConvert.SerializeObject(requestData,新JsonSerializerSe

您知道如何使用
RestSharp
生成json密钥作为
snake\u case

使用
Newtonsoft.Json
,我可以像这样设置Json输出

DefaultContractResolver contractResolver=新的DefaultContractResolver
{
NamingStrategy=新的蛇案例NamingStrategy()
};
string json=JsonConvert.SerializeObject(requestData,新JsonSerializerSettings
{
ContractResolver=ContractResolver,
格式化=格式化。缩进
});
但我不确定如何使用
RestSharp

var client=newrestclient(getService.MstUrl);
client.AddDefaultHeader(“Authorization”,string.Format(“Bearer{0}”,token));
var request=new RestRequest(Method.POST).AddJsonBody(requestData);
var response=wait client.ExecuteAsync(请求);

它保持生成为
camelCase
。是否有任何类似于
Newtonsoft.Json
的配置?

您应该能够创建自己的
IRestSerializer
实现,并在
客户端中提供它。使用Serializer

给定的

public class SimpleJsonSerializer : IRestSerializer
{
   private readonly DefaultContractResolver _contractResolver;

   public SimpleJsonSerializer()
   {
      _contractResolver = new DefaultContractResolver
      {
         NamingStrategy = new SnakeCaseNamingStrategy()
      };   
   }
   public string Serialize(object obj) => JsonConvert.SerializeObject(obj, new JsonSerializerSettings
   {
      ContractResolver = _contractResolver,
      Formatting = Formatting.Indented
   });

   public string Serialize(Parameter bodyParameter) => Serialize(bodyParameter.Value);

   public T Deserialize<T>(IRestResponse response) => JsonConvert.DeserializeObject<T>(response.Content);

   public string[] SupportedContentTypes { get; } =
   {
      "application/json", "text/json", "text/x-json", "text/javascript", "*+json"
   };

   public string ContentType { get; set; } = "application/json";

   public DataFormat DataFormat { get; } = DataFormat.Json;
}

免责声明:我已经多年没有使用过
RestSharp
,我再也不打算使用它了。此外,我真的建议任何想用它切换回
HttpClient
,或者更好的
IHttpClientFactory
。更重要的是,这完全没有经过测试,只是作为一个例子。您可能需要根据自己的需要修改它,但使用RestSharp并不意味着您不能同时使用
Newtonsoft
序列化程序

从:

RestSharp通过单独的包支持Json.Net序列化程序。您可以从NuGet安装它

继续你的工作:

DefaultContractResolver contractResolver = new DefaultContractResolver
{
    NamingStrategy = new SnakeCaseNamingStrategy()
};

可以分享您的经验为什么不再使用
RestSharp
client.UseNewtonsoftJson();
DefaultContractResolver contractResolver = new DefaultContractResolver
{
    NamingStrategy = new SnakeCaseNamingStrategy()
};