如何从多个json文件中安排类似的数据,但格式不同?

时间:2018-06-13 10:06:30

标签: c# asp.net .net json

我是JSON的新手,并尝试使用来自2个不同JSON文件的数据开发比较表,如下所示。

Json File 1

"data":[
    {
        "EffectiveDate": "2017-04-01T00:00:00Z",
        "IncludedQuantity": 0,
        "Category": "VM",
        "Id": "d0bf9053",
        "Name": "Element1",
        "Rates": {
            "0": 0.04
        },
        "Region": "US",
        "Status": "Active",
        "SubCategory": "S1",
        "Tags": [],
        "Unit": "Hours"
    },
    {
        "EffectiveDate": "2017-02-01T00:00:00Z",
        "IncludedQuantity": 0,
        "Category": "DS",
        "Id": "8b7672d4",
        "Name": "Element2",
        "Rates": {
            "0": 4.0177
        },
        "Region": "UK",
        "Status": "Active",
        "SubCategory": "S2",
        "Tags": [],
        "Unit": "Days"
    }]

Json File 2

"data":{
    "d0bf9053":{
        "EffectiveDate": "2017-04-01T00:00:00Z",
        "IncludedQuantity": 0,
        "Category": "VM",
        "Id": "d0bf9053",
        "Attributes":{
           "Name": "Element1",
           "Rates": {
               "0": 5
           },
           "Region": "US",
           "Status": "Active",
           "SubCategory": "S1",
           "Tags": [],
           "Unit": "Hours"
           }
    },
    "8b7672d4":{
        "EffectiveDate": "2017-02-01T00:00:00Z",
        "IncludedQuantity": 0,
        "Category": "DS",
        "Id": "8b7672d4",
        "Attributes":{
           "Name": "Element2",
           "Rates": {
              "0": 1
           },
           "Region": "UK",
           "Status": "Active",
           "SubCategory": "S2",
           "Tags": [],
           "Unit": "Days"
           }
    }}

现在我必须阅读这些数据并将其合并以根据费率和类别创建比较。我创建了Dot.Net Console Application并尝试使用SQL Server来存储信息。现在我可以轻松阅读JSON File 1了。但是我在存储来自JSON File 2的值时遇到了困难。我该怎么解决这个问题,或者我错了。

提前致谢。

1 个答案:

答案 0 :(得分:1)

这里的问题是你在第二个JSON文件(Json File 2)中有动态属性名称,你可能无法将该JSON反序列化为.Net类,对吧?

以下是一些可用于反序列化Json1和Json2类型的示例:

public class dataJson1
{
    public List<Detail> data { get; set; }
}

public class dataJson2
{
    public Dictionary<string, Detail> data { get; set; }
}

public class Detail
{
    public DateTime EffectiveDate { get; set; }
    public int IncludedQuantity { get; set; }
    public string Category { get; set; }
    //add the rest of the props here
}

这应该让你开始,一旦它被反序列化为那些对象,比较它们应该是微不足道的。