Member 11405465 Ответов: 0

Слияние нескольких JSON и нескольких уровней group by в C#


I'm trying to merge multiple JSON files which has the same type of data inside them and fetch the merged data from those JSONs. For example below are two JSON files.

JSON 1

[
{
    "Name": "Sample1",
    "Data": [
        {
            "Name": "Sample1 Sub1",
            "Data": [
                {
                    "Name": "XXX",
                    "ID": ["278924"]
                }
            ]
        }
    ]
},
{
    "Name": "Sample2",
    "Data": [
        {
            "Name": "Sample2 Sub1",
            "Data": [
                {
                    "Name": "XXX",
                    "ID": ["278378"]
                },
                {
                    "Name": "YYY",
                    "ID": ["278289"]
                }
            ]
        }
    ]
}
]

JSON 2

[
{
    "Name": "Sample1",
    "Data": [
        {
            "Name": "Sample1 Sub1",
            "Data": [
                {
                    "Name": "XXX",
                    "ID": ["357896"]
                }
            ]
        }
    ]
},
{
    "Name": "Sample2",
    "Data": [
        {
            "Name": "Sample2 Sub1",
            "Data": [
                {
                    "Name": "XXX",
                    "ID": ["356842"]
                },
                {
                    "Name": "YYY",
                    "ID": ["357123"]
                }
            ]
        }
    ]
}
]

I'm expecting the output to be in the below format.

[
{
    "Name": "Sample1",
    "Data": [
        {
            "Name": "Sample1 Sub1",
            "Data": [
                {
                    "Name": "XXX",
                    "ID": ["278924, 357896"]
                }
            ]
        }
    ]
},
{
    "Name": "Sample2",
    "Data": [
        {
            "Name": "Sample2 Sub1",
            "Data": [
                {
                    "Name": "XXX",
                    "ID": ["278378,356842"]
                },
                {
                    "Name": "YYY",
                    "ID": ["278289,357123"]
                }
            ]
        }
    ]
}
]

Any help would be appreciated.


Что я уже пробовал:

I tried to deserialize the JSON into List in Class format and group by from there which ended in multiple loops. I don't have any code handy, I'm parallely working on this now

Richard MacCutchan

Самый простой способ-преобразовать JSON в связанные объекты класса C# и объединить их оттуда. Но поскольку вы не показали никакого кода или не объяснили, какие сбои вы видите, трудно предложить много.

Member 11405465

Привет, спасибо за ваш ответ. Я попытался десериализовать jsons в объекты класса c# и применил группу, которая дала мне первый уровень группировки. Ниже приведен пример кода.

var JsonList = новый список<rootobject>();
string[] files = { @"SampleJSON.json", @"C:SampleJSON1.json" };
foreach (var file in files)
{
JsonList.AddRange(JsonConvert.DeserializeObject<list<rootobject>>(файл.ReadAllText(файл)));
}
ВАР массивы jsonarray = (JsonList.Метод groupBy(х => У Х.имя).Выберите(y => y));

Но у меня все еще есть еще два списка внутри этих сгруппированных данных, которые снова нужно сгруппировать.

Richard MacCutchan

Выполните один и тот же код для разных групп, создав новые массивы/списки, а затем объедините списки/массивы, прежде чем сериализовать их обратно в JSON.

0 Ответов