2015-03-31 72 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);