我正在尝试在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语句完成?
我在项目中使用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中创建解决方案或项目更容易。