首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >解析Python JSON

解析Python JSON
EN

Stack Overflow用户
提问于 2015-06-19 07:45:17
回答 2查看 83关注 0票数 0

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

代码语言:javascript
复制
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
...

我尝试过以下几种方法:

代码语言:javascript
复制
  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: string索引必须是整数

我做错了什么?在代码中,接口是通过执行json.load()

EN

回答 2

Stack Overflow用户

发布于 2019-06-26 08:31:11

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2015-06-19 07:49:53

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

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30927686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档