You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将C#的UserResponse类对象转换为指定格式的驼峰命名JSON

解决方案

你需要满足两个序列化规则:1. 所有属性名输出为小驼峰格式;2. int/decimal等数值类型序列化时转为字符串格式。主流的两种C# JSON序列化库的实现方案如下:


方案1:使用官方自带的System.Text.Json(适用于.NET Core 3.0+ / .NET 5+)

步骤1:自定义数值转字符串的序列化转换器

using System.Text.Json;
using System.Text.Json.Serialization;

public class NumberToStringConverter : JsonConverter<object>
{
    public override bool CanConvert(Type typeToConvert)
    {
        // 匹配需要转字符串的数值类型
        return typeToConvert == typeof(int) || typeToConvert == typeof(decimal);
    }

    public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        // 反序列化逻辑按需实现,仅序列化需求可跳过实现
        throw new NotImplementedException();
    }

    public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options)
    {
        writer.WriteStringValue(value.ToString());
    }
}

步骤2:配置序列化参数并执行序列化

// 配置序列化规则
var jsonOptions = new JsonSerializerOptions
{
    // 启用小驼峰命名
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
    // 格式化美化输出,不需要可以删除
    WriteIndented = true
};
// 添加自定义数值转字符串转换器
jsonOptions.Converters.Add(new NumberToStringConverter());

// 示例对象实例化
var userResponse = new UserResponse
{
    UserInfo = new User
    {
        Id = 1,
        FirstName = "John",
        LastName = "Doe",
        Balance = 1000m
    },
    Age = "25",
    Gender = "Male",
    Message = "Hello"
};

// 执行序列化得到目标JSON
string jsonResult = JsonSerializer.Serialize(userResponse, jsonOptions);

方案2:使用Newtonsoft.Json(Json.NET)

步骤1:安装Newtonsoft.Json NuGet包后配置序列化规则

using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;

// 配置序列化规则
var jsonSettings = new JsonSerializerSettings
{
    // 启用小驼峰命名
    ContractResolver = new CamelCasePropertyNamesContractResolver(),
    // 格式化美化输出,不需要可以删除
    Formatting = Formatting.Indented
};
// 全局配置int、decimal类型序列化时转为字符串
jsonSettings.Converters.Add(new JsonConverter<int>(
    (writer, value, serializer) => writer.WriteValue(value.ToString()),
    (reader, type, existingValue, hasExistingValue, serializer) => int.Parse(reader.Value.ToString())
));
jsonSettings.Converters.Add(new JsonConverter<decimal>(
    (writer, value, serializer) => writer.WriteValue(value.ToString()),
    (reader, type, existingValue, hasExistingValue, serializer) => decimal.Parse(reader.Value.ToString())
));

// 示例对象实例化和上述方案一致
var userResponse = new UserResponse
{
    UserInfo = new User
    {
        Id = 1,
        FirstName = "John",
        LastName = "Doe",
        Balance = 1000m
    },
    Age = "25",
    Gender = "Male",
    Message = "Hello"
};

// 执行序列化得到目标JSON
string jsonResult = JsonConvert.SerializeObject(userResponse, jsonSettings);

两种方案输出的JSON都完全匹配你要求的格式。

内容的提问来源于stack exchange,提问作者bmo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 03:15:01