【问题标题】:.NET Core - Json.NET Deserialisation Mapping.NET Core - Json.NET 反序列化映射
【发布时间】:2017-12-18 09:28:12
【问题描述】:

在JSON字符串到对象的反序列化过程中是否可以做映射?

var resultObject = JsonConvert.DeserializeObject<ConfigItemGetResult>(result);

我的 JSON 字符串与我想要反序列化的对象不同。所以映射必须发生。我试图避免创建一个将 1 到 1 映射到 JSON 字符串的模型,然后使用 AutoMapper 从对象映射到对象。

【问题讨论】:

    标签: asp.net-core json.net json-deserialization


    【解决方案1】:

    使用Serialization Attributes 配置您的序列化映射

    public class JsonTest
    {
        [JsonProperty(PropertyName = "SomePropNameFromJson")]
        public string SomeProp { get; set; }
        [JsonProperty(PropertyName = "SomeNested")]
        public SomeClass SomeClass { get; set; }
    }
        public class SomeClass
        {
             public SomeClass1 SomeClass1 { get; set; }
        }
    
        public class SomeClass1
        {
              public string text { get; set }
        }
    

    这里是 Json

    { "SomeProp":"value", "SomeNested":{ “某类1”:{ “文本”:“文本值” } } }

    Json convert 尝试通过反射将文本转换为带有值的道具名称的对象如果他们在文本中找到道具名称,如果道具名称在 JSON 中具有不同的名称,则它们取值,您可以通过 [JsonProperty(PropertyName = "SomeNested") 指定它] 如果默认情况下未设置此属性,它将尝试通过道具名称获取,无论属性是什么,它是某个对象(您的嵌套对象)或基本类型,它都会尝试自动转换它。

    【讨论】:

    • @user2963570,当然
    • 你能举个例子吗?
    • @user2963570,你需要什么样的例子?你能提供你需要的带有嵌套道具的示例类吗?
    • 例如:object Customer -> object Address -> string Street
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多