如何遍历动态json c#?

时间:2019-02-18 15:38:17

标签: c# json api

我从api得到响应,但是此响应可以是任何类型的json。 我需要获取数据并将其打印在csv上,是否可以将json转换为动态对象并对其进行迭代,还是有其他方法可以实现?

我的json响应是:

{
"A":{
    "B":[
        {
            "C":"data"
            "E":"data"
            "G":{
                "H":[
                    {"I":"data"},
                    {...},
                    {...}
                ]
            }
        },

        {...},

        {...},

        {...}
    ]
}

}

,后者可能是

{
"A":{
    "B":[
        {
            "C":"data"
            "E":"data"
            "G":{
                "H":[
                    {"I":"data"},
                    {...},
                    {...},
                    {"K":[
                        {"w":"data"},
                        {...},
                        {...},
                        {"d":[
                            {"d":"data"},
                            {...},
                            {"d":[
                                {"h","data"},
                                {...},
                                {...}
                            ]}
                        ]}
                    ]}
                ]
            }
        },

        {...},

        {...},

        {...}
    ]
}

}

1 个答案:

答案 0 :(得分:0)

使用Cinchoo ETL-可用于解析json并将其转换为CSV的开源库

string json = @"
{
    ""name"":""John"",
    ""age"":30,
    ""cars"": {
    ""car1"":""Ford"",
    ""car2"":""BMW"",
    ""car3"":""Fiat"",
    ""Country"": [
        ""USA"",
        ""Mexico""
        ]
    }
}";

StringBuilder csv = new StringBuilder();
using (var p = ChoJSONReader.LoadText(json)
    .WithJSONPath("$")
    )
{
    using (var w = new ChoCSVWriter(csv)
        .WithFirstLineHeader()
        )
    {
        w.Write(p);
    }
}

Console.WriteLine(csv.ToString());

输出:

name,age,cars_car1,cars_car2,cars_car3,cars_Country_0,cars_Country_1
John,30,Ford,BMW,Fiat,USA,Mexico

免责声明:我是这个图书馆的作者。