2017-09-16 116 views
0

根据此讨论中的代码(How to build object hierarchy for serialization with json.net?),我将如何初始化JNotification并将值分配给包含JPayload,JCustomData,JFilter的JNotification?C#初始化类并分配值Newtonsoft.Json

public class JNotification 
{ 
    public string status { get; set; } 
    public JPayload payload = new JPayload(); 
    public JFilter filter = new JFilter(); 
} 

public class JPayload 
{ 
    public string title { get; set; } 
    public string message { get; set; } 
    public JCustomData customData = new JCustomData(); 
} 

public class JCustomData 
{ 
    public string addType { get; set; } 
    public string addTitle { get; set; } 
    public string addMessage { get; set; } 
    public int addAppraiserId { get; set; } 
    public int addAppraisalId { get; set; } 
    public int addAppraisalCommentId { get; set; } 
    public int addAppraisalStatusHistoryId { get; set; } 
} 

public class JFilter 
{ 
    public int AppraiserId { get; set; } 
} 

回答

1

要创建对象图,序列化到JSON和反序列化,这样做:

var data = new JNotification() { 
    status = "New", 
    payload = new JPayload() { 
     title = "SomeTitle", 
     message = "msg", 
     customData = new JCustomData() { ... } 
    }, 
    filter = new JFilter() { 
     AppraiserId = 1 
    } 
} 
string json = JsonConvert.SerializeObject(data); 
JNotification dataAgain = JsonConvert.DeserializeObject<JNotification>(json); 

以上使用Newtonsoft.Json NuGet包。

请注意,如果您想使用C#的默认命名约定,您可以将序列化程序设置为小写每个属性的第一个字母。

也有属性配置输出(如果你想跳过一个属性,使用枚举的字符串,等等)

+0

特勒尔斯,正是我一直在寻找。谢谢! – Jeffry

0

我很确定json反序列化会调用no-arg公共构造函数。如果你在JNotification的构造函数中构造这些对象,它们应该被初始化。