首页 > 解决方案 > 获取 JSON 中的所有元素

问题描述

我有一个列出股票的 JSON 文件:

{
  "MSFT": [
    {
      "2019-12-12 17:55:10.209859": [
        {
          "1. open": "152.4000",
          "2. high": "152.4000",
          "3. low": "152.3420",
          "4. close": "152.3750",
          "5. volume": "45689"
        }
      ]
    },
    {
      "2019-12-12 17:56:21.124256": [
        {
          "1. open": "152.3800",
          "2. high": "152.4100",
          "3. low": "152.3500",
          "4. close": "152.3896",
          "5. volume": "21770"
        }
      ]
    },
    {
      "2019-12-12 17:57:26.149805": [
        {
          "1. open": "152.3800",
          "2. high": "152.3800",
          "3. low": "152.2200",
          "4. close": "152.2250",
          "5. volume": "33914"
        }
      ]
    },
    {
      "2019-12-12 17:58:30.483878": [
        {
          "1. open": "152.2240",
          "2. high": "152.3675",
          "3. low": "152.0272",
          "4. close": "152.0940",
          "5. volume": "127676"
        }
      ]
    }
  ]
}

我想遍历所有元素,并获得日期。就像我想要一个数据结构:

data = { 'date':{'open' = y, 'highest' = x, 'lowest' = z, 'close' = k, 'volume='d} }

我应该如何解决这个问题?我正在为一个项目做这件事,我尝试了很多不同的可能解决方案,但都没有奏效。请让我知道如何解决这个问题。非常感谢你!

标签: pythonjsonpython-3.x

解决方案


如果您想解开这种结构,那么我相信以下代码段可能会对您有所帮助:

tmp = [x.popitem() for x in j_content['MSFT']]
result = dict(zip([x[0] for x in tmp], [x[1].pop() for x in tmp]))
# prints
'''
{
    '2019-12-12 17:55:10.209859': {'1. open': '152.4000', '2. high': '152.4000', '3. low': '152.3420', '4. close': '152.3750', '5. volume': '45689'},
    '2019-12-12 17:56:21.124256': {'1. open': '152.3800', '2. high': '152.4100', '3. low': '152.3500', '4. close': '152.3896', '5. volume': '21770'},
    '2019-12-12 17:57:26.149805': {'1. open': '152.3800', '2. high': '152.3800', '3. low': '152.2200', '4. close': '152.2250', '5. volume': '33914'},
    '2019-12-12 17:58:30.483878': {'1. open': '152.2240', '2. high': '152.3675', '3. low': '152.0272', '4. close': '152.0940', '5. volume': '127676'}
}
'''

推荐阅读