系统文本Json从对象数组读取单个对象

时间:2019-10-15 08:32:39

标签: json .net-core-3.0

我正在尝试使用新的系统文本Json库从json数组读取单个对象。 我的json看起来像这样:

select emp_id, max(emp_log_id) as emp_log_id, timestamp 
from table1
group by emp_id, timestamp

这只是一个例子。一个Json Object实际上大约有12个属性。但是,假设c#中有一个类,如下所示:

select
    worker employeeID,
    transdate,
    max(case when emplchangetype = 3 then employee_details end) department,
    max(case when emplchangetype = 8 then employee_details end) status,
    max(case when emplchangetype = 5 then employee_details end) designation,
    max(case when emplchangetype = 6 then employee_details end) manager
from employee 
group by worker, transdate

,我只想获取ID匹配给定namen的软件包,我就这样尝试过:

[
  {
    "Id": "test1",
    "Version": "16.0.461",
  },
  {
    "Id": "test2",
    "Version": "2.1.0",
  }
]

是否可以将JsonElement转换为我的 Data 类的实例?

1 个答案:

答案 0 :(得分:0)

使用类似这样的内容:

JsonElement current = document.RootElement;  
if (objectName.Equals(current.GetProperty("Id"))) 
{
     //But i'm using TryGetProperty
     //This is example code for first element in JSON array
     string id = current[0].GetProperty("id").GetString(); //test1
     string version = current[0].GetProperty("Version").GetString(); //16.0.461
     
     //And now you can create your Data object
     Data data_object = new Data(id, version)
}

如果我对您的理解正确,这应该可以解决

UPD: 我不建议您使用标准库,因此请改用Json.NET,该库非常方便且运行更快(例如,我将反序列化速度提高到了约0.2秒link for more info