簡體   English   中英

從asp.net中的json中提取數據c#

[英]extract data from json in asp.net c#

我正試圖從json中提取一些數據。 我一直在尋找JSS或Json.net的解決方案,但一直無法解決這個問題。 這就是我的Json的樣子: 注意:我已經過測試,映射和分散工作! 我正在尋找一種從json中提取特定數據的方法!

提前致謝!

{
"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":[],
}

我已經映射如下

 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; }
}

我需要從我的json中提取以下信息。(來自may json中的特定任務!例如第一個id為:tmp_fk1345624806538)。 注意:我從json文件中獲取json,如下所示:

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);

}

您可以使用LINQ快速查詢對象。

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

測試任務,如果為null則沒有匹配id的任務。 如果您確定將有匹配的任務,您可以使用.First(),但如果列表中沒有匹配則會拋出異常

你需要添加一個使用System.Linq; 如果你還沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM