c# - 将 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"}";
解决方案
您将字符串传递给 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 是无法解决的。如果您不想使用对象,那么您需要自己操作字符串。
推荐阅读
- python - 我的基本顺序模型有什么问题?
- javascript - JS中TD内的三元条件运算符
- python - 从 Python 中的文件随机生成测验问题
- javascript - 在 textarea 中预加载文本以供用户编辑和提交,短暂显示文本然后空白。为什么?
- meteor - MeteorJS Mup - 在新计算机上推送捆绑卡在 0%
- asp.net-web-api - 如何配置 JsonProperty 必需。始终使用不可为空的值类型
- django - Django URLs.py - url 无法识别和注册的命名空间
- angular - 角度重复构造器
- postgresql - PostgreSQL / TimescaleDB 查询按自定义间隔分组数据
- sql - TSQL:使用 if 条件插入表