首页 > 解决方案 > Json反序列化,反序列化时无法将int解析成字符串。尝试使用自定义转换器类解决此问题

问题描述

我从 rest API 收到一个 int,我希望将 json 反序列化器放入字符串属性“Hovednummer”,但我收到一条错误消息,提示无法从 int 转换为字符串。

我尝试使用我称为 IntToStringConverter 的自定义转换器类来解决此问题。我向属性 Hovednummer [JsonConverter(typeof(IntToStringConverter))] 添加了一个 Json 属性。

但它不起作用,当我调试程序时,它甚至没有在自定义转换器类中输入任何断点。

namespace CrownData.DataInteractionLayer.DanishCrown.Models
{
    public class StemDataReadDTO
    {
        [JsonConverter(typeof(IntToStringConverter))]
        public string Hovednummer { get; set; }
        public EjerStem Ejer { get; set; }
    }


    public class IntToStringConverter : Newtonsoft.Json.JsonConverter
    {
        public override bool CanConvert(Type typeToConvert)
        {
            return typeToConvert == typeof(string);
        }

        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }

        public override int GetHashCode()
        {
            return base.GetHashCode();
        }

        public object IntToString(JsonReader reader) //, Type objectType, object existingValue, JsonSerializer serializer
        {
            if (reader.TokenType == JsonToken.Null)
                return null;
            if (reader.TokenType == JsonToken.String)
                return reader.Value;
            if (reader.TokenType == JsonToken.Integer)
                return reader.Value.ToString();

            throw new JsonReaderException(string.Format("Unexcepted token {0}", reader.TokenType));
        }

        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            throw new NotImplementedException();
        }

        public override string ToString()
        {
            return base.ToString();
        }

        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            throw new NotImplementedException();
        }
    }

标签: c#asp.netjson

解决方案


推荐阅读