一尘不染

在C#中解析Json字符串

c#

我正在尝试在C#中读取Json字符串,但是在弄清楚如何将字符串解析为C#时遇到了麻烦。说我有以下Json字符串

[
    {
        "AppName": {
            "Description": "Lorem ipsum dolor sit amet",
            "Value": "1"
        },
        "AnotherAppName": {
            "Description": "consectetur adipisicing elit",
            "Value": "String"
        },
        "ThirdAppName": {
            "Description": "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua",
            "Value": "Text"
        },
        "Application": {
            "Description": "Ut enim ad minim veniam",
            "Value": "100"
        },
        "LastAppName": {
            "Description": "quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat",
            "Value": "ZZZ"
        }
    }
]

我想使用以下格式将其解析为arraylist或字典

descriptionList["AppName"] = "Lorem ipsum dolor sit amet";
valueList["AppName"] = "1";

我一直在玩Json.Net,但是我所看到的示例并不能使我清楚地知道应该如何做。实现此目标的最佳方法是什么?难道这像在jQuery中一样使用foreach语句完成?


阅读 1437

收藏
2020-05-19

共1个答案

一尘不染

我在项目中使用Json.net,效果很好。在这种情况下,您可以执行以下操作来解析json:

编辑:我更改了代码,因此它支持读取您的json文件(数组)

解析代码:

void Main()
{
    var json = System.IO.File.ReadAllText(@"d:\test.json");

    var objects = JArray.Parse(json); // parse as array  
    foreach(JObject root in objects)
    {
        foreach(KeyValuePair<String, JToken> app in root)
        {
            var appName = app.Key;
            var description = (String)app.Value["Description"];
            var value = (String)app.Value["Value"];

            Console.WriteLine(appName);
            Console.WriteLine(description);
            Console.WriteLine(value);
            Console.WriteLine("\n");
        }
    }
}

输出:

AppName
Lorem ipsum dolor sit amet
1


AnotherAppName
consectetur adipisicing elit
String


ThirdAppName
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
Text


Application
Ut enim ad minim veniam
100


LastAppName
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat
ZZZ

顺便说一句,您可以使用LinqPad来测试代码,这比在我认为的Visual
Studio中创建解决方案或项目更容易。

2020-05-19