0

I'm trying to extract some data from json. I've been looking for a solution either in JSS or Json.net but haven't been able to figure this problem out. this is how my Json looks like: Note: i Have tested and the mapping and decentralization works! I'm looking for a way to extract specifc data from the json!

Thanks in Advance!

{
"tasks":[
  {
    "id":"tmp_fk1345624806538",
    "name":"Gantt editor ",
    "code":"",
    "level":0,
    "status":"STATUS_ACTIVE",
    "start":1346623200000,
    "duration":5,
    "end":1347055199999,
    "startIsMilestone":false,
    "endIsMilestone":false,
    "assigs":[
      {
        "resourceId":"tmp_3",
        "id":"tmp_1345625008213",
        "roleId":"tmp_1",
        "effort":7200000
      }
    ],
    "depends":"",
    "description":"",
    "progress":0
  },
  {
    "id":"tmp_fk1345624806539",
    "name":"phase 1",
    "code":"",
    "level":1,
    "status":"STATUS_ACTIVE",
    "start":1346623200000,
    "duration":2,
    "end":1346795999999,
    "startIsMilestone":false,
    "endIsMilestone":false,
    "assigs":[
      {
        "resourceId":"tmp_1",
        "id":"tmp_1345624980735",
        "roleId":"tmp_1",
        "effort":36000000
      }
    ],
    "depends":"",
    "description":"",
    "progress":0
  },
  {
    "id":"tmp_fk1345624789530",
    "name":"phase 2",
    "code":"",
    "level":1,
    "status":"STATUS_SUSPENDED",
    "start":1346796000000,
    "duration":3,
    "end":1347055199999,
    "startIsMilestone":false,
    "endIsMilestone":false,
    "assigs":[
      {
        "resourceId":"tmp_2",
        "id":"tmp_1345624993405",
        "roleId":"tmp_2",
        "effort":36000000
      }
    ],
    "depends":"2",
    "description":"",
    "progress":0
  }
],
"resources":[
  {
    "id":"tmp_1",
    "name":"Resource 1"
  },
  {
    "id":"tmp_2",
    "name":"Resource 2"
  },
  {
    "id":"tmp_3",
    "name":"Resource 3"
  }
],"roles":[
{
  "id":"tmp_1",
  "name":"Project Manager"
},
{
  "id":"tmp_2",
  "name":"Worker"
}
],
"canWrite":true,
"canWriteOnParent":true,
"selectedRow":0,
"deletedTaskIds":[],
}

i've already mapped as follow

 public class Rootobject
{
    public Task[] tasks { get; set; }
    public Resource[] resources { get; set; }
    public Role[] roles { get; set; }
    public bool canWrite { get; set; }
    public bool canWriteOnParent { get; set; }
    public int selectedRow { get; set; }
    public object[] deletedTaskIds { get; set; }
}

public class Task
{
    public string id { get; set; }
    public string name { get; set; }
    public string code { get; set; }
    public int level { get; set; }
    public string status { get; set; }
    public long start { get; set; }
    public int duration { get; set; }
    public long end { get; set; }
    public bool startIsMilestone { get; set; }
    public bool endIsMilestone { get; set; }
    public Assig[] assigs { get; set; }
    public string depends { get; set; }
    public string description { get; set; }
    public int progress { get; set; }
}

public class Assig
{
    public string resourceId { get; set; }
    public string id { get; set; }
    public string roleId { get; set; }
    public int effort { 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; }
}

and I need to extract following information from my json.(from specific Task in may json! for example the first one with id : tmp_fk1345624806538 ). Note: i'm getting my json from a json file as follow:

string startDate; // this is what i need to extract
string endDate;   // this is what i need to extract
string Progress;  // this is what i need to extract

public void load()
{
    GC.GClass l = new GC.GClass();
    string jsonString = l.load();  // i get my json from a json file

    Rootobject project = JsonConvert.DeserializeObject<Rootobject>(jsonString);

}

1 Answer 1

2

You can use LINQ to query the object quickly.

Task task = project.tasks.FirstOrDefault(t=> t.id == "tmp_fk1345624806538");

Test task, and if null then there was not task with matching id. If you are sure that there will be a matching task your can just use .First(), but it will throw an exception if there is no match in the list

You'll need to add a using System.Linq; if you don't have that already.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.