2017-12-18 311 views
1

是否有可能在反序列化JSON字符串过程中进行映射到对象?.NET核心 - Json.NET反序列化映射

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

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

回答

0

使用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”: “值”, “SomeNested”:{ “SomeClass1”:{ “文本” :“textvalue” } }}

Js如果转换尝试将文本转换为对象通过具有值通过反射的价值如果他们在文本中发现道具名称,他们将获得价值如果道具名称在JSON中有不同的名称,您可以通过[JsonProperty(PropertyName =“SomeNested”)]指定它,如果这attr没有默认设置,它会尝试通过prop名称获取,无论属性是什么,它是一些对象(你的嵌套对象)或基本类型,它会尝试自动转换它。

+0

这是否与嵌套属性aswel一起工作? – user2963570

+0

@ user2963570,当然 – itikhomi

+0

你能提供一个例子吗? – user2963570