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

C#如何移除JSON字符串多余引号并正确反序列化playerInfo

解决JsonConvert.DeserializeObject解析时playerInfo为字符串无法转对象的问题

方法一:分步解析

先解析外层JSON对象,再单独将playerInfo字符串解析为对应实体:

  1. 定义外层数据模型:
public class OuterModel
{
    public string playerInfo { get; set; }
    // 补充其他需要的属性
}
  1. 定义与playerInfo结构匹配的实体类(比如PlayerInfoModel)。
  2. 分步执行解析:
// 解析外层对象
var outerModel = JsonConvert.DeserializeObject<OuterModel>(jsonString);
// 将playerInfo字符串解析为目标对象
var playerInfo = JsonConvert.DeserializeObject<PlayerInfoModel>(outerModel.playerInfo);

方法二:使用自定义JsonConverter

通过自定义转换器自动处理字符串转对象的逻辑,无需分步解析:

  1. 实现自定义转换器:
public class PlayerInfoConverter : JsonConverter<PlayerInfoModel>
{
    public override PlayerInfoModel ReadJson(JsonReader reader, Type objectType, PlayerInfoModel existingValue, bool hasExistingValue, JsonSerializer serializer)
    {
        // 读取到字符串类型时,转义后再解析
        if (reader.TokenType == JsonToken.String)
        {
            var jsonStr = reader.Value.ToString();
            return JsonConvert.DeserializeObject<PlayerInfoModel>(jsonStr);
        }
        // 正常对象类型直接解析
        return serializer.Deserialize<PlayerInfoModel>(reader);
    }

    public override void WriteJson(JsonWriter writer, PlayerInfoModel value, JsonSerializer serializer)
    {
        serializer.Serialize(writer, value);
    }
}
  1. 在外层模型的playerInfo属性上标记转换器:
public class OuterModel
{
    [JsonConverter(typeof(PlayerInfoConverter))]
    public PlayerInfoModel playerInfo { get; set; }
    // 补充其他需要的属性
}
  1. 直接解析整个对象:
var fullModel = JsonConvert.DeserializeObject<OuterModel>(jsonString);

方法三:预处理JSON字符串(若原始JSON存在格式问题)

如果playerInfo的引号是不必要的转义导致的,可以先修正JSON格式再解析:

// 用正则替换去掉playerInfo值的首尾引号
var fixedJson = Regex.Replace(jsonString, @"(""playerInfo"":)""([^""]+)""", "$1$2");
var fullModel = JsonConvert.DeserializeObject<OuterModel>(fixedJson);

注意:此方法仅适用于playerInfo内容中无未转义引号的场景,否则可能破坏JSON结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 05:52:44