gpt4 book ai didi

json - RestSharp 在驼峰式大小写中序列化 JSON

转载 作者:行者123 更新时间:2023-12-04 12:49:40 31 4
gpt4 key购买 nike

我正在尝试在camelCase中发布JSON,并已按照此处的说明进行操作:

https://github.com/restsharp/RestSharp/wiki/Deserialization#overriding-jsonserializationstrategy

public class CamelCaseSerializerStrategy : PocoJsonSerializerStrategy
{
protected override string MapClrMemberNameToJsonFieldName(string clrPropertyName)
{
return char.ToLower(clrPropertyName[0]) + clrPropertyName.Substring(1);
}
}

然后我使用以下代码创建一个新客户端:
var client = new RestClient(_baseUrl);
SimpleJson.CurrentJsonSerializerStrategy = new CamelCaseSerializerStrategy();

尽管如此,在发出请求时,序列化程序并未激活。 RestSharp 文档到处都是,而且很大程度上是不正确的。查看源代码( RestRequest.AddBody ),看起来根本没有使用 SerializerStrategy 。

我一直在寻找一种在客户端级别或不需要修改每个请求的地方进行此更改的方法。

我见过 this blog - 也许这是唯一的方法。如果您只能在请求级别更改序列化策略,那么对于 RestSharp 来说似乎是一个巨大的倒退。

最佳答案

我遇到了完全相同的问题。幸运的是,我按照 here 提供的说明设法解决了这个问题。 .

基本上,对于每个请求,您必须设置 JsonSerializerNewtonsoftJsonSerializer .例子:

var request = new RestRequest();
request.JsonSerializer = new NewtonsoftJsonSerializer();
NewtonsoftJsonSerializer的来源以下:

public NewtonsoftJsonSerializer()
{
ContentType = "application/json";
_serializer = new JsonSerializer
{
MissingMemberHandling = MissingMemberHandling.Ignore,
NullValueHandling = NullValueHandling.Include,
DefaultValueHandling = DefaultValueHandling.Include
};
}

public NewtonsoftJsonSerializer(JsonSerializer serializer)
{
ContentType = "application/json";
_serializer = serializer;
}


public string Serialize(object obj)
{
using (var stringWriter = new StringWriter())
{
using (var jsonTextWriter = new JsonTextWriter(stringWriter))
{
jsonTextWriter.Formatting = Formatting.Indented;
jsonTextWriter.QuoteChar = '"';

_serializer.Serialize(jsonTextWriter, obj);

var result = stringWriter.ToString();
return result;
}
}
}

public string DateFormat { get; set; }
public string RootElement { get; set; }
public string Namespace { get; set; }
public string ContentType { get; set; }
}

希望它能解决您的问题!

关于json - RestSharp 在驼峰式大小写中序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32867944/

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