是否可以不经过对象序列化反序列化将Pascal Case JSON转换为Camel Case JSON?
问题根因
你现有代码的错误逻辑在于直接将原始JSON字符串作为string类型传入序列化方法:
- 转义字符问题:
JsonSerializer会将输入的字符串当做普通文本序列化,内部的双引号会被强制转义,因此出现\u0022这类Unicode转义字符 - 驼峰转换失效:序列化器没有解析原始JSON的结构,自然不会对属性名做大小写转换处理
解决方案
不需要定义自定义业务实体类,可通过JsonNode类型做中间转换,完全满足你不做业务对象反序列化的需求:
完整代码示例
using System.Text.Json; using System.Text.Encodings.Web; // 配置序列化规则 JsonSerializerOptions jsonOptions = new() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // 关闭不必要的Unicode转义,输出标准双引号 Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping }; // 原始Pascal Case JSON字符串 var pascalPayload = "{\"Id\":\"1\",\"Type\":\"Confectionary\"}"; // 解析为通用JSON节点,无需绑定自定义模型 JsonNode? jsonNode = JsonSerializer.Deserialize<JsonNode>(pascalPayload); // 序列化后即可得到Camel Case格式的JSON字符串 var camelCasePayload = JsonSerializer.Serialize(jsonNode, jsonOptions);
输出结果
{"id":"1","type":"Confectionary"}
完全符合你的预期输出要求。
内容的提问来源于stack exchange,提问作者KI1
相关产品推荐
相关产品推荐

