2015-03-31 73 views
0

應用程序向我提供一個包含未知數量對象的.json文件。最重要的是,對象內容也發生了很大變化。動態讀取具有多個對象的.json文件

這裏是一個JSON文件的例子:

{ 
    "AVRunning":{ 
     "Description":"Symantec Antivirus Service", 
     "Status":true 
    }, 
    "CorrectOU":{ 
     "Description":"Server in Correct OU", 
     "Status":true 
    }, 
    "RoleAdGroups":{ 
     "Result":true, 
     "Group":"Server-Admin" 
    }, 
    "DefaultAdGroups":[ 
     { 
     "Result":true, 
     "Group":"Domain Admins" 
     }, 
     { 
     "Result":true, 
     "Group":"Server-Admins" 
     }, 
     { 
     "Result":true, 
     "Group":"SERVERNAME-ADMINS" 
     } 
    ] 
} 

這僅僅是一個JSON文件的一個例子。它可能包含更多的對象以及其中的未知數量的內容。

我對你們所有人的問題是,我如何將這個序列化成C#中的JSON對象,一旦我讀取的內容作爲一個巨大的字符串?

另外,我可能會在這裏過度複雜化這個過程。一旦我閱讀了這篇文章,我想將數據傳遞給我的觀點。如果這不能在C#中完成,那麼在JQuery中執行它會更容易嗎?或者應該首先在那裏完成?我正在閱讀的文件是本地文件,所以我無法直接在jquery中訪問數據。

我知道JSON.NET是一個可能的工具,但從我讀過的東西,我不知道如何動態創建對象。

+0

您將如何處理在您看來這個數據?如果它本質上是動態的,你怎麼知道如何處理它呢? – 2015-03-31 22:21:29

+0

請提出第二個問題(關於將數據傳遞到視圖中)到SO上的一個新的單獨問題。 – 2015-03-31 23:00:23

回答

-1

jQuery使它非常簡單(只是jQuery.parseJSON(<your string>);)。

我想JSON.NET也有一個解析函數,但我沒有使用該庫,所以我不能肯定地說!

+0

我發現最好使用jquery動態解析json,而不是爲每個對象構建部分視圖。使用jquery會更容易,因爲我不確定我的json文件將包含多少個對象,並且每個對象的屬性數量也會發生很大變化。 – Johnrad 2015-04-06 13:04:36

1

你必須定義成要反序列化JSON字符串數據類型:

public class ObjectWithDescriptionAndStatus 
{ 
    public string Description; 
    public string Status; 
} 

public class ObjectWithResultAndGroup 
{ 
    public bool Result; 
    public string Group; 
} 

public class MyObject 
{ 
    public ObjectWithDescriptionAndStatus AVRunning; 
    public ObjectWithDescriptionAndStatus CorrectOU; 
    public ObjectWithResultAndGroup RoleAdGroups; 
    public IList<ObjectWithResultAndGroup> DefaultAdGroups; 
} 

這是最簡單的例子,與各界標記爲public並在JSON正是命名爲鍵(他們可以有任意名稱,但在這種情況下,您必須使用DataMember屬性修飾每個字段並將其Name屬性設置爲鍵的實際名稱)。

有數據類型定義,反序列化是一個班輪:

MyObject myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<MyObject>(json);