【发布时间】:2021-01-22 07:57:58
【问题描述】:
我有一个关于向类实例提供数据的问题。所以我有两个包含日常数据的 json 文件,我最终需要将它们作为一个类实例(以方便以后使用):
Json 1:
{id:1,days:[{day:1,data1:blah!, data2:blah2, data3:blah3},{day:2,data1:blah!, data2:blah2, data3:blah3},{ day:3,data1:blah!, data2:blah2, data3:blah3]}
Json2:
{id:1,days:[{day:1,data4:blah!, data5:blah2, data6:blah3},{day:2,data4:blah!, data5:blah2, data6:blah3},{ day:3,data4:blah!, data5:blah2, data6:blah3}]}
我有课
public class rootObject
{
public int id {get; set;}
public Days[] data {get; set;}
}
public class Days
{
public Datetime day {get; set;}
public string data1 {get; set;}
public string data2 {get; set;}
public string data3 {get; set;}
public string data4 {get; set;}
public string data5 {get; set;}
public string data6 {get; set;}
}
我正在使用
rootObject myData = JsonSerializer.Deserialize<rootObject>(json1);
很好地提供了一半的数据。
我现在需要的是在匹配日期的同时将第二个文件中的数据添加到同一个 myData 中,这样我就可以拥有一个对象,以后可以一次从中提取所有字段。
目前我正在使用来自第二个 Json 的数据创建第二个 myData2,然后我使用嵌套循环和 if 来组合它们:
foreach(Day x in myData.data){
foreach(Day y in myData2.data){
if(x.day == y.day){
x.data4 = y.data4
// (and so on)
}
}
}
尽管上面的方法有效,但我经常使用它,它使代码变得一团糟。必须有一种更快、更优雅的方式来做到这一点。
【问题讨论】:
-
为什么两个json有相同的id?
-
我会制作 2 种类型来反序列化这些不同的 json。然后将另一种类型转换为您需要的数据。转换是不可避免的,并且与您所做的相同。
-
id 和 this 一样是客户端 ID,这部分数据无关。最重要的是,我需要将“天”合并为一个类实例,以后可以使用