一个应用程序正在为我提供一个.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是一个可能的工具,但从我所读到的内容来看,我不确定如何动态创建对象。
您必须定义要反序列化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);
jQuery使它非常简单(仅为jQuery.parseJSON(<your string>);
)。
我想JSON.NET也有一个解析函数,但我还没有使用过那个库,所以我不能肯定!