我目前有一个JSON文件,如下所示(我删除了很多重复值,但结构相同)。
[{
"page" : {
"currentPageNumber" : "page1",
"pageTextLocation" : "\\Assets\\Stories\\Story 1\\Chapter1\\",
"decision":[{
"activeDecision" : true,
"nextPage" : "Page2",
},
{
"activeDecision" : true,
"nextPage" : "Page2",
},
{
"activeDecision" : true,
"nextPage" : "Page2",
}
]
},
"page" : {
"currentPageNumber" : "page2",
"pageTextLocation" : "\\Assets\\Stories\\Story 2\\Chapter2\\",
"decision":[{
"activeDecision" : true,
"nextPage" : "Page3",},
{
"activeDecision" : true,
"nextPage" : "Page3",
},
{
"activeDecision" : true,
"nextPage" : "Page3",
},
{
"activeDecision" : true,
"nextPage" : "Page3",
}]
}}]
我可以确认JSON文件的全文正确加载到字符串值中。但是,当我将该值传递给JsonArray.Parse(loadedTextValue)
时,返回值仅包含JSON文件中的最终数组。输出仅显示数组中的最后一个对象。如果有两个"页面"对象,它只会解析第二个。如果有三个"页面对象,它只会解析第三个。
但是,如果我更改"页面"的键值名称对于唯一的名称,解析器检测所有代码并将其转换为可用的数组值。以下数据完全加载到JsonArray
值。
[{
"page" : {
"currentPageNumber" : "page1",
"pageTextLocation" : "\\Assets\\Stories\\Story 1\\Chapter1\\",
"decision":[{
"activeDecision" : true,
"nextPage" : "Page2",
},
{
"activeDecision" : true,
"nextPage" : "Page2",
},
{
"activeDecision" : true,
"nextPage" : "Page2",
}
]
},
"page2" : {
"currentPageNumber" : "page2",
"pageTextLocation" : "\\Assets\\Stories\\Story 2\\Chapter2\\",
"decision":[{
"activeDecision" : true,
"nextPage" : "Page3",},
{
"activeDecision" : true,
"nextPage" : "Page3",
},
{
"activeDecision" : true,
"nextPage" : "Page3",
},
{
"activeDecision" : true,
"nextPage" : "Page3",
}]
}}]
总结:要解析整个加载的文本文件,以便代码并遍历这些值,然后将其解压缩。
我完全没有关于这种行为的原因的想法。任何输入将不胜感激!谢谢!
答案 0 :(得分:3)
它不起作用,因为您有多个具有相同值的键。如果您查看JSONValue的文档,您将看不到任何接受密钥的方法。因此,不支持具有相同值的多个密钥。你必须改变你的JSON格式,比如说
[
{
"type": "page",
"currentPageNumber": "page1",
...
},
{
"type": "page",
"currentPageNumber": "page2",
...
},
...
]
这种方式Parse()
将返回一个JSON对象数组。下一步是通过检查对象type
选择正确的对象,如果它是page
,则将对象处理为显示currentPageNumber
的页面。