【问题标题】:Parsing a Python JSON解析 Python JSON
【发布时间】:2019-06-26 09:55:27
【问题描述】:

我正在尝试解析下面的 JSON,并从元素中提取名称和间隔。

reply "[ {
  "interface" : [ {
    "name" : "ethernet39",
    "number" : 39,
    "rate" : [ {
      "interval" : 45,
      "rx-bad-vlan-rate" : 0,
      "rx-broadcast-packet-rate" : 0,
      "rx-byte-rate" : 0,
      "rx-drop-rate" : 0,
      "rx-error-rate" : 0,
      "rx-multicast-packet-rate" : 0,
      "rx-unicast-packet-rate" : 0,
      "timestamp" : "2015-06-18T21:59:23.703Z",
      "tx-broadcast-packet-rate" : 0,
      "tx-byte-rate" : 0,
      "tx-drop-rate" : 0,
      "tx-error-rate" : 0,
      "tx-multicast-packet-rate" : 0,
      "tx-unicast-packet-rate" : 0
    }, {
      "interval" : 45,
      "rx-bad-vlan-rate" : 0,
      "rx-broadcast-packet-rate" : 0,
      "rx-byte-rate" : 0,
      "rx-drop-rate" : 0
...

我尝试了以下方法:

  for x in range(0,len(interfaces)):
    for interface in interfaces[x]:
      entry = {}
      entry['name'] = statistic['name']
      for interval in statistic['rate']:
        entry['byte_rate'] = interval['rx-byte-rate']
        entry['packet_rate'] = interval['rx-unicast-packet-rate']
        entry['timestamp'] = interval['timestamp']
        entry['droprate'] = interval['rx-drop-rate']
        entry['errorrate'] = interval['rx-error-rate']
    entries.append(entry)

但是,我总是收到一个错误 TypeError: 字符串索引必须是整数

我做错了什么?代码中interfaces是通过json.load()获取的JSON

【问题讨论】:

标签: python json


【解决方案1】:

“interface”和“rates”字典值是列表,因此您需要对它们进行索引。

print("name = {}".format(reply["interface"][0]["name"]))
rates = reply["interface"][0]["rate"]
for rates_index in range(len(rates)):
    print("rate = {}".format(rates[rates_index]["interval"]))

【讨论】:

    【解决方案2】:

    不应该是界面而不是统计吗??

    for x in range(0,len(interfaces)):
        for interface in interfaces[x]:
          entry = {}
          entry['name'] = interface['name']
          for interval in interface['rate']:
            entry['byte_rate'] = interval['rx-b
    

    【讨论】:

    • 是的,但这并没有什么不同;同样的错误在同一个地方。很好的收获
    猜你喜欢
    • 2012-01-03
    • 1970-01-01
    • 2019-08-11
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    相关资源
    最近更新 更多