使用c#读取静态存储在文本文件中的mulitiline JSON格式数据

时间:2014-12-03 03:30:58

标签: c# .net json linq json.net

上面提到的JSON数据不会从Web服务或来自Web的任何其他来源获取。我将手动创建模板并将JSON格式的数据存储在本地计算机的文本文件中。我看过JSON.net包含完成工作的有用方法。到目前为止我使用的代码如下所示,它打印得恰当

WebClient w = new WebClient();
var data = w.DownloadString(@"D:\ComponentsJSON.txt");
//Read the file    
JObject j = JObject.Parse(data);
Console.WriteLine("Name: " + j["name"]);
Console.WriteLine("Property1: " + j["property"][0]);
Console.WriteLine("Property2: " + j["property"][1]);

但是上面只能读取文本文件中的一行。当同一个文件中存在多个Json元素时,怎么办呢。

D:\ ComponentsJSON.txt的内容是:

[{"name":"WinWindow", "property" : ["Name","ClassName"], "value": ["MCP","OSCP"]},

{"name":"WinButton", "property" :["Name","ClassName"], "value": ["OK","Button"]}]

1 个答案:

答案 0 :(得分:0)

Parse方法用于解析特定对象,而不是反序列化整个文件。如果JSON包含一个数组,则需要调用JArray.Parse。 JObject只解析一个对象。

要读取任意字符串,请使用JsonConvert.DeserializeObject重载之一,例如:

var data=JsonConvert.DeserializeObject(data);

var items=JsonConvert.DeserializeObject<List<MyClass>>(data);

检查&#34; Serializing Collections&#34;在Json.NET的文档中