【问题标题】:Can a json file contain a key in the nth element that is not in preceding elements?json 文件是否可以在第 n 个元素中包含不在前面元素中的键?
【发布时间】:2026-02-07 06:40:01
【问题描述】:

这是一个合法的 json 结构吗?如何在 someList 中的任意点访问 subDictkey? (例如 not someList[4]['someList'])'someList' 的每个元素中都必须存在 'subDictkey' 吗?

{ 
    'dict': {
        'someList': [
           {},
           {},
           {},
           {},
           {'subDictkey':
                'sublist':[]
           },
        ]
    }
 }

【问题讨论】:

    标签: python json pandas io


    【解决方案1】:

    如果您想阅读列表sublist,这很好用:

    import pandas as pd
    import numpy as np
    import json
    
    js = """[{ 
        "dict": {
            "someList": [
               {"a":1},
               {"b":2},
               {"subDictkey": 
                 {"sublist": 
                   ["a","b","c"]
                 }
               }
            ]
        }
     }]""";
    
    
    with open('a.json','w') as fo:
      fo.write(js)
    
    ## read json file
    with open('a.json') as fi:
        data = json.load(fi)
    
    df = pd.io.json.json_normalize(data=data,meta=[['dict', 'somelist','subDictkey']])
    df.values[0][0][2]['subDictkey']['sublist']
    
    Gives:
    ['a', 'b', 'c']
    

    【讨论】:

    • 我应该能够做的是返回一个所有字段都是 1d 的 df,并且我只有我需要的元数据。在这里我可以得到具体的字段,但不是事先知道它在哪里,并在 df 上做额外的工作以删除多余的数据。
    【解决方案2】:

    好的,我会保持沉默的意思是这会很糟糕,你不应该这样做。

    我认为元素应该在整个列表中保持一致,而不仅仅是“出现”在第 n 个元素中。

    【讨论】:

    • 这并不是对原始问题的真正答案。
    • 好吧,不,我想不是,但这是我的问题。有时没有答案就是答案。如果你有更好的我想听听。
    最近更新 更多