首页 > 解决方案 > 无法解析 JSON 文件和设计查询中的值

问题描述

这是我试图解析的 JSON 文件。

查询输出参数将由另一个实例填充此数据结构是否正确。

提前致谢 !!

{
        "bpu_add": [
          {
          "input_parameters":  {
                                   "command_name" : "bpu_add"
                                },

          "output_parameters": {
                                   "bpu_id" : "",
                                   "ran_ip" : "",
                                   "ue_ip"  : ""
                               }
          }
        ]
}

这是我读取这个 JSON 文件的代码

import json
from pprint import pprint

with open('bpu_add.json') as f:
    data = json.load(f)

pprint(data)

data["bpu_add"]["input_parameters"]["command_name"]
ddata["bpu_add"]["output_parameters"]["bpu_id"]
data["bpu_add"] ["output_parameters"]["ran_ip"]
data["bpu_add"] ["output_parameters"]["ue_ip"]

错误

{u'bpu_add': [{u'input_parameters': {u'command_name': u'bpu_add'},
               u'output_parameters': {u'bpu_id': u'',
                                      u'ran_ip': u'',
                                      u'ue_ip': u''}}]}
Traceback (most recent call last):
  File "grpcHandler.py", line 9, in <module>
    data["bpu_add"]["input_parameters"]["command_name"]
TypeError: list indices must be integers, not str

标签: pythonjson

解决方案


使用索引来访问密钥。“bpu_add”是一个列表。

前任:

data  = {
        "bpu_add": [
          {
          "input_parameters":  {
                                   "command_name" : "bpu_add"
                                },

          "output_parameters": {
                                   "bpu_id" : "",
                                   "ran_ip" : "",
                                   "ue_ip"  : ""
                               }
          }
        ]
}

print( data["bpu_add"][0]["input_parameters"]["command_name"] )
print( data["bpu_add"][0]["output_parameters"]["bpu_id"] )
print( data["bpu_add"][0]["output_parameters"]["ran_ip"] )
print( data["bpu_add"][0]["output_parameters"]["ue_ip"] )

输出:

bpu_add

推荐阅读