Json Mapping and serializing in C#
c#, json, serialization
Solution
Here is a link to a fantastic tool that maps Json to C#, here is what your mapping should look like:
public class Task
{
public object id { get; set; }
public string name { get; set; }
public string code { get; set; }
public int level { get; set; }
public string status { get; set; }
public object start { get; set; }
public int duration { get; set; }
public object end { get; set; }
public bool startIsMilestone { get; set; }
public bool endIsMilestone { get; set; }
public bool collapsed { get; set; }
public List<object> assigs { get; set; }
}
public class Resource
{
public string id { get; set; }
public string name { get; set; }
}
public class Role
{
public string id { get; set; }
public string name { get; set; }
}
public class RootObject
{
public List<Task> tasks { get; set; }
public int selectedRow { get; set; }
public List<object> deletedTaskIds { get; set; }
public List<Resource> resources { get; set; }
public List<Role> roles { get; set; }
public bool canWrite { get; set; }
public bool canWriteOnParent { get; set; }
}
There is also another slick way of mapping json to C# (I believe it comes with Visual Studio 2012 -> Web Essentials), you can go `Edit`-> `Paste Special`-> `Paste JSON as Classes`
EDIT
Since you've asked using Json.NET (you can get it from NuGet) you can deserialize your json like this:
RootObject deserialized = JsonConvert.DeserializeObject<RootObject>(data);
Problem
i'm trying to map a json string similar to this in c# to an object. my purpose is to send it to my cilent side (it's a jquery application) I was wondering whether i'm doing right ? ``` {"tasks":[ { "id":-1, "name":"Gantt editor", "code":"", "level":0, "status":"STATUS_ACTIVE", "start":1372608000000, "duration":21, "end":1375113599999, "startIsMilestone":true, "endIsMilestone":false, "collapsed":false, "assigs":[] }, { "id":"tmp_fk1372575559620", "name":"release", "code":"", "level":1, "status":"STATUS_ACTIVE", "start":1372608000000, "duration":1, "end":1372694399999, "startIsMilestone":false, "endIsMilestone":false, "collapsed":false, "assigs":[] } ], "selectedRow":8, "deletedTaskIds":[], "resources": [ { "id":"tmp_1", "name":"Resource 1" } ], "roles":[ { "id":"tmp_1", "name":"Project Manager" } ], "canWrite":true, "canWriteOnParent":true } ``` and this is how i mapped it ``` public class Attributes { public List<Task> _Task { get; set; } public List<Resource> _Resource { get; set; } public List<Role> _Role { get; set; } public bool _canWrite { get; set; } //"canWrite":true, public bool _canWriteOnParent { get; set; } //"canWriteOnParent":true, public bool _selectedRow { get; set; } //"selectedRow":0, public string [] _DeletedTaskIds { get; set; } //"deletedTaskIds":[], } public class Task { private string _id { get; set; } private string _name { get; set; } private string _code { get; set; } private int _level { get; set; } private string _status { get; set; } private int _start { get; set; } //“start”:1348696800000, private int _duration { get; set; } //“duration”:10, private int _end { get; set; } //“end”:1349906399999, private bool _startIsMilestone { get; set; } //“startIsMilestone”:false, private bool _endIsMilestone { get; set; } //“endIsMilestone”:false, public List<Assign> _assigns { get; set; } //“assigs”:[…], private string _depends { get; set; } //“depends”:”7:3,8″, private string _description { get; set; } //“description”:”Approval of testing”, private int _progress { get; set; } //“progress”:20 } public class Assign { private string _resourceId { get; set; } //“resourceId”:”tmp_1″, private string _id { get; set; } //“id”:”tmp_1345560373990″, private string _roleId { get; set; } //“roleId”:”tmp_1″, private string _effort { get; set; } //“effort”:36000000 } public class Resource { private string _id { get; set; } //“id”:”tmp_1″, private string _name { get; set; } //“name”:”Resource 1″ } public class Role { private string _id { get; set; } //“id”:”tmp_1″, private string _name { get; set; } //“name”:”Project Manager” } ``` if I'm doing it right, how can I serialize it into an object and send in order to send it to client side ?