2014-12-03 27 views
-1

上述JSON數據將不會從web服務或任何其他來源從web.I手動創建模板和存儲JSON格式的數據,在我的本地machine.I文本文件已經看過JSON.net其中包含有用的方法來得到這份工作done.The代碼我用至今的下方,它打印適當閱讀mulitiline JSON格式的數據靜態存儲在一個文本文件使用c#

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

感謝。我編輯了這個問題來縮小問題的範圍 – 2014-12-03 11:52:16

+0

感謝您添加示例並實際添加您面臨的問題。 – 2014-12-03 16:24:08

+0

注意:它看起來像你的帖子的標題與帖子正文無關 - 你的代碼已經解析了正確的JSON,而你的問題似乎是「如何解析堆疊成單個文件的多個JSON對象(可能沒有任何分隔符)」。考慮添加非常小的樣本,以顯示您的文件實際外觀(即「{a:1} {a:2}」或「{a:1} \ n {a:2}」或其他)。 – 2014-12-03 16:25:49

回答

0

Parse方法可用於解析特定對象,而不是反序列化整個文件。如果JSON包含數組,則需要調用JArray.Parse。 JObject只會解析一個對象。

要閱讀的任意字符串使用JsonConvert.DeserializeObject重載之一,例如:在Json.NET的

var data=JsonConvert.DeserializeObject(data); 

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

檢查 「Serializing Collections」 文檔

+0

Thanks.The解決方案適用於我 – 2014-12-03 18:53:00