首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Json.Array()只解析数组中的最终值?[C#] (解决方案:单个对象中的重复值)

Json.Array()只解析数组中的最终值?[C#] (解决方案:单个对象中的重复值)
EN

Stack Overflow用户
提问于 2016-01-01 21:15:06
回答 1查看 91关注 0票数 0

我现在有一个JSON文件,它看起来如下(我去掉了很多重复的值,但是结构是相同的)。

代码语言:javascript
运行
复制
    [{
"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文件中的最终数组。输出仅显示数组中的最后一个对象。如果有两个“页面”对象,它将只解析第二个对象。如果有三个“页面对象”,它将只解析第三个。

但是,如果我将键值名称"page“更改为唯一名称,解析器将检测所有代码并将其转换为可用的数组值。以下数据将完全加载到JsonArray值中。

代码语言:javascript
运行
复制
            [{
"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",
        }]
    }}]

摘要:解析整个加载的文本文件,以便代码和迭代值,提取它。

我完全不知道这种行为的原因。如有任何意见,将不胜感激!谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-01 21:30:13

它不能工作,因为您有多个具有相同值的键。如果您查看JSONValue的文档,您将不会发现任何接受具有相同值的key.Therefore多键的方法都不受支持。您必须将JSON格式更改为

代码语言:javascript
运行
复制
[
  {
    "type": "page",
    "currentPageNumber": "page1",
    ...
  },
  {
    "type": "page",
    "currentPageNumber": "page2",
    ...
  },
  ...
]

这样,Parse()将返回一个JSON对象数组。下一步是通过检查对象type来选择正确的对象,如果对象是page,则将对象作为页面处理,就像显示currentPageNumber一样。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34560128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档