首页 > 解决方案 > 将 Pascal Case Json 有效负载转换为 Camel Case 有效负载的问题

问题描述

是否推荐甚至可以将 Pascal Case JSON 字符串转换为 Camel Case JSON?

我知道如何将有效负载反序列化为对象,然后再次将其序列化为字符串,但这不是我目前想要的。

到目前为止,我已经这样做了:

JsonSerializerOptions jsonOptions = new() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase};
var pascalPayload = "{\"Id\":\"1\",\"Type\":\"Confectionary\"}";
var camelCasePayload = JsonSerializer.Serialize(pascalPayload, jsonOptions)

我在这里看到的问题是它包含以下字符,我没想到,而且我的属性也没有序列化为驼峰式。例如

 {\u0022Id:\u00221\u0022,....

我是否从序列化选项中遗漏了一些东西,因为我期望这是输出:

"{"id":"1","type":"Confectionary"}";

标签: c#json

解决方案


您将字符串传递给 Serialize 而不是对象。因此,您有效地将已经是 json 的字符串序列化为字符串值....

您需要传递这样的对象:

首先声明一个类:

public class MyPayload
{
     public string Id { get; set; }
     public string Type { get; set; }
}

然后你的代码:

JsonSerializerOptions jsonOptions = new() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase};
//notice we create an instance and pass that to Serialize
var pascalPayload = new MyPayload { Id = "1", Type = "Confectionary"};
var camelCasePayload = JsonSerializer.Serialize(pascalPayload, jsonOptions);

使用 JsonSerializer 是无法解决的。如果您不想使用对象,那么您需要自己操作字符串。


推荐阅读