用python解析json数据

用python解析json数据,python,arrays,json,python-3.x,Python,Arrays,Json,Python 3.x,我在解析生成的json数据以返回只需要的部分(例如,“名称”、“过道”、“状态”)时遇到问题。如何修改输出以仅打印这些项目 代码: 打印时,我得到以下格式: { "1": { "name": "camera", "aisle": "M.3", "status": "In Stock" }, "2": { "name": "camera", "aisle": "M.53", "status": "Out of Stock" },

我在解析生成的json数据以返回只需要的部分(例如,“名称”、“过道”、“状态”)时遇到问题。如何修改输出以仅打印这些项目

代码:

打印时,我得到以下格式:

{
  "1": {
    "name": "camera",
    "aisle": "M.3",
    "status": "In Stock"
  },
   "2": {
    "name": "camera",
    "aisle": "M.53",
    "status": "Out of Stock"  
  },
   "3":{
    "name": "camera",
    "aisle": "M.32",
    "status": "In Stock"
  }
}
我希望每个循环的输出在一行上,例如:

    '35': { 'name': 'Camera', 'aisle': 'M.35', 'status': 'Out of stock' },
    '36': { 'name': 'Camera', 'aisle': 'J.35', 'status': 'In stock' }

仅供参考,输出文件中的示例数据看起来错误,因为值字符串不是有效的json。应该是这样的:

"{\"results\":[{\"name\":\"Camera\",\"department\":{\"name\":\"Electronics\",\"storeDeptId\":-1},\"location\":{\"aisle\":[\"M.35\"],\"detailed\":[{\"zone\":\"M\",\"aisle\":\"36\",\"section\":\"2\"}]},\"price\":{\"priceInCents\":49900,\"isRealTime\":true,\"currencyUnit\":\"USD\"},\"inventory\":{\"quantity\":3,\"status\":\"Out of stock\",\"isRealTime\":true}}]}"
注意
]
在我的JSON版本中,但在你的JSON版本中没有。一旦获得有效的JSON,就可以使用JSON.loads将该JSON字符串转换为一个可以从中提取数据的值:

data = json.loads(data['searchResults'])
print json.dumps(data, indent=2)
这应该让你:

{
  "results": [
    {
      "department": {
        "name": "Electronics",
        "storeDeptId": -1
      },
      "inventory": {
        "status": "Out of stock",
        "isRealTime": true,
        "quantity": 3
      },
      "price": {
        "priceInCents": 49900,
        "isRealTime": true,
        "currencyUnit": "USD"
      },
      "name": "Camera",
      "location": {
        "detailed": [
          {
            "aisle": "36",
            "section": "2",
            "zone": "M"
          }
        ],
        "aisle": [
          "M.35"
        ]
      }
    }
  ]
}
现在,类似这样的操作将使您接近所需的修剪输出:

for coro in asyncio.as_completed(tasks, loop=loop):
    try:
        data, store = await coro
        result = json.loads(data['searchResults'])['results'][0] #Storing retrieved json data
        summary = {
            'name': result['name'],
            'aisle': result['location']['aisle'][0],
            'status': result['inventory']['status'],
        }
        results[store] = summary
    except (IndexError):
        continue
在此之后,输出文件中的输出将如下所示:

'35': { 'name': 'Camera', 'aisle': 'M.35', 'status': 'Out of stock' },

你有没有碰巧读过这些文件?他们解释了如何将JSON数据转换为Python dict,然后,您只需访问适当的dict元素,并按自己喜欢的方式打印它们。在这种情况下,您最好停止使用json,将这些项目连接起来,然后将它们写入文本文件。谢谢-我更新了上面的帖子,但出现了以下错误:NameError:name“data”未定义谢谢-我更新了上面的帖子,但得到了以下错误:名称错误:未定义名称“数据”。不需要更新代码块的最后两行。用输出txt文件的原始代码替换它们。我如何修改“写入文件”,使每个循环的结果都在单独的行上?现在,我为每个数据点获得一条新线。
'35': { 'name': 'Camera', 'aisle': 'M.35', 'status': 'Out of stock' },