动态读取包含多个对象的 .json 文件
Dynamically reading .json file with multiple objects
一个应用程序向我提供了一个 .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 是一种可能的工具,但根据我所读的内容,我不确定如何动态创建对象。
jQuery 非常简单(只需 jQuery.parseJSON(<your string>);
)。
我想 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);
一个应用程序向我提供了一个 .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 是一种可能的工具,但根据我所读的内容,我不确定如何动态创建对象。
jQuery 非常简单(只需 jQuery.parseJSON(<your string>);
)。
我想 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);