相关疑难解决方法(0)

设置默认的全局json序列化程序设置

我正在尝试在我的设置中设置这样的全局序列化设置global.asax.

var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
formatter.SerializerSettings = new JsonSerializerSettings
{
    Formatting = Formatting.Indented,
    TypeNameHandling = TypeNameHandling.Objects,
    ContractResolver = new CamelCasePropertyNamesContractResolver()
};
Run Code Online (Sandbox Code Playgroud)

使用以下代码序列化对象时,不使用全局序列化程序设置?

return new HttpResponseMessage(HttpStatusCode.OK)
{
    Content = new StringContent(JsonConvert.SerializeObject(page))
};
Run Code Online (Sandbox Code Playgroud)

是不是可以像这样设置全局序列化设置,还是我错过了什么?

c# json json.net asp.net-web-api asp.net-mvc-5

35
推荐指数
2
解决办法
5万
查看次数

ASP.NET Core 3.0 System.Text.Json Camel案例序列化

在ASP.NET Core 3.0 Web API项目中,如何指定System.Text.Json序列化选项以自动将Pascal Case属性序列化/反序列化为Camel Case,反之亦然?

给定具有Pascal Case属性的模型,例如:

public class Person
{
    public string Firstname { get; set; }
    public string Lastname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

以及使用System.Text.Json将JSON字符串反序列化为Person类类型的代码:

var json = "{\"firstname\":\"John\",\"lastname\":\"Smith\"}";
var person = JsonSerializer.Deserialize<Person>(json);
Run Code Online (Sandbox Code Playgroud)

除非将JsonPropertyName与以下每个属性一起使用,否则不会成功反序列化:

public class Person
{
    [JsonPropertyName("firstname")
    public string Firstname { get; set; }
    [JsonPropertyName("lastname")
    public string Lastname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我在中尝试了以下方法startup.cs,但在仍然需要方面没有帮助JsonPropertyName

services.AddMvc().AddJsonOptions(options =>
{
    options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
    options.JsonSerializerOptions.PropertyNamingPolicy = …
Run Code Online (Sandbox Code Playgroud)

c# json asp.net-core system.text.json

3
推荐指数
6
解决办法
1774
查看次数