Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c读取静态存储在文本文件中的多行JSON格式数据#_C#_.net_Json_Linq_Json.net - Fatal编程技术网

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

C# 使用c读取静态存储在文本文件中的多行JSON格式数据#,c#,.net,json,linq,json.net,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(da

上面提到的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"]}]

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

要读取任意字符串,请使用其中一个重载,例如:

var data=JsonConvert.DeserializeObject(data);

var items=JsonConvert.DeserializeObject(数据);

查看Json.NET文档中的“”

谢谢。我编辑了这个问题,以缩小添加示例和实际添加您面临的问题的问题范围。注意:现在您的帖子标题似乎与帖子正文无关-您已经有了解析正确JSON的代码,您的问题似乎是“如何解析堆积在单个文件中的多个JSON对象”(可能没有任何分隔符)“考虑添加非常小的示例来显示文件的实际样子(即“{a:1 }{a:2 }”或“{a:1 }\n{a:2 }”或其他东西)。为什么使用WebCube读取文件?您是对的。我用简单的StreamReader替换了WebCube以完成任务。
var items=JsonConvert.DeserializeObject<List<MyClass>>(data);