【问题标题】:Python seems to only read one item per top-level arraysPython 似乎每个顶级数组只读取一项
【发布时间】:2021-01-19 20:54:39
【问题描述】:

我有一个用 Python 读取的 JSON 文件。 JSON(见下文)包含两个顶级项,都是数组,包含复杂的结构,包括较低级别的其他数组。出于某种原因,Python 似乎只从两个顶级数组中读取一项。

这是 JSON:

{
    "deliverables": [
        {
            "name": "<uvCode>gadget1",
            "objects": [
                { "name": "handler-plate" },
                { "name": "Cone" }
            ]
        },
        {
            "name": "<uvCode>gadget2",
            "objects": [
                { "name": "handler-plate" },
                { "name": "Cone" }
            ]
        }
    ],    
    "uvCombinations": [
        {
            "name": "st01",
            "uvMapping": [
                {
                    "objectNameContains": "handler-plate",
                    "uvLayer": "UVMap1"
                },
                {
                    "objectNameContains": "Cone",
                    "uvLayer": "UVMap1"
                }
            ]
        },
        {
            "name": "st02",
            "uvMapping": [
                {
                    "objectNameContains": "handler-plate",
                    "uvLayer": "UVMap3"
                },
                {
                    "objectNameContains": "Cone",
                    "uvLayer": "UVMap2"
                }
            ]
        }
    ]
}

这是我读取和转储 JSON 文件的代码:

with open("file.json") as configFile:
  configuration = json.load(configFile)
  logging.debug("CONFIG: %s", json.dumps(configuration, indent=4))

这是输出:

CONFIG: {
    "deliverables": [
        {
            "name": "<uvCode>gadget1",
            "objects": [
                {
                    "name": "handler-plate"
                },
                {
                    "name": "Cone"
                }
            ]
        }
    ],
    "uvCombinations": [
        {
            "name": "st02",
            "uvMapping": [
                {
                    "objectNameContains": "handler-plate",
                    "uvLayer": "UVMap3"
                },
                {
                    "objectNameContains": "Cone",
                    "uvLayer": "UVMap2"
                }
            ]
        }
    ]
}

数组deliverables 的第二项(名称为&lt;uvCode&gt;gadget2)和数组uvCombination 的第一项(名称为st01)不知何故丢失。

我不是 Python 专家,但我认为这应该像魅力一样工作,奇怪的是,丢失的项目甚至不是同一个索引。如果您观察到名为 objectsuvMapping 的数组被正确读取,那就更有趣了。

我做错了什么?,可怜的家伙问

【问题讨论】:

  • 我无法重现这个。我怀疑您正在阅读的文件不包含您认为的内容。
  • 我无法重现此问题。给定您的 JSON 和 Python 代码,我会得到所有内容都完好无损的输出 JSON。其他事情正在发生。

标签: python arrays json


【解决方案1】:

哦,伙计们,你们救了我的命!由于你们两个报告得很快,你无法复制它,并且正如乔丹建议我的文件可能不包含我认为的那样,我首先启动了 ROTL,然后我查看了文件,发现文件名没有更新...我正在编辑另一个文件几个小时...:D

谢谢,伙计们,真的。如果你不说你不能复制它,我从来没有意识到这一点,因为我完全忘记了文件的另一个副本。

【讨论】:

    猜你喜欢
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多