我的代码的一部分以下面的格式将计算机的文件路径序列化为JSON。我正在努力接受这个JSON,并重新将文件路径重新组合在一起。我正在使用Newtonsoft JSON库;我发现它非常适合构建JSON。正如你所看到的,我的JSON嵌套了对象。如何反序列化未知对象结构的JSON对象
的JSON我有:
{
".": {
"proc": {
"15": {
"task": {
"15": {
"exe": {},
"mounts": {
"list_of_files": [
"mounts.xml"
]
},
"mountinfo": {
"list_of_files": [
"mountinfo.xml"
]
},
"clear_refs": {
"list_of_files": [
"clear_ref.xml"
]
}
}
}
},
"14": {
"loginuid": {
"list_of_files": [
"loginuid.xml"
]
},
"sessionid": {
"list_of_files": [
"sessionid.xml"
]
},
"coredump_filter": {
"list_of_files": [
"coredump_filter.xml"
]
},
"io": {
"list_of_files": [
"io.xml"
]
}
}
}
}
}
数组我想从这个生成。
string[] dirArray = {
"./proc/15/task/15/exe",
"./proc/15/task/15/mounts/mounts.xml",
"./proc/15/task/15/mountinfo/mountinfo.xml",
"./proc/15/task/15/clear_refs/clear_ref.xml",
"./proc/14/loginuid/loginuid.xml",
"./proc/14/sessionid/sessionid.xml",
"./proc/14/coredump_filter/coredump_filter.xml",
"./proc/14/io/io.xml"
}
我的努力,我far--的deserialised JSON成一个动态的变量,但我不知道如何处理两个问题:
- 我的JSON格式是未知的,我不知道物体有多深,我该如何处理?
- 如何在运行时定义动态变量时使用动态变量?
编辑
对不起,我原来的JSON格式是错误的,所以它不会与user12864提供的answer工作。我收到一个错误:Unable to cast object of type 'Newtonsoft.Json.Linq.JArray' to type 'Newtonsoft.Json.Linq.JObject'.
这是一个fiddle显示我到目前为止的位置。
我可以建议你放弃所有的层次和而只是将每个路径存储为完整的路径? .NET中的'Path' API应足以确定代码的层次结构。整个事情会更容易处理,并且由此产生的JSON将更具可读性。 – mason 2014-11-03 15:39:08
但是,如果我拥有的是json,我需要从中获得路径。也许我误解你的评论? json首先的原因是允许UI消费者以可导航的方式显示路径。我现在编写的代码是要了解他们选择保留哪些路径,UI将编辑json并发送回去,为了执行某些任务,我需要解构为路径。 – Fearghal 2014-11-03 15:39:50
我在说你应该改变你的格式。只要它是一个JSON数组文件,不要以分层的方式存储它。 – mason 2014-11-03 15:42:06