从json输出到python中的变量赋值(通配符)

2024-09-26 22:51:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在处理一个.json块,它是一个API调用的输出。 我试图获取这些数据的某些片段并将它们分配给变量,这样我就可以在某些重新格式化的消息中使用它们。在

以下是my.json输出的示例:

{
  "content": {
    "HTTP": {
      "obsess": "1",
      "check_command": "check_http",
      "active_checks_enabled": "1",
      "process_performance_data": "1",
      "last_state_change": "1421870740",
      "last_event_id": "1"
    }
    "PING": {
      "obsess": "1",
      "check_command": "check_ping!100.0,20%!500.0,60%",
      "active_checks_enabled": "1",
      "process_performance_data": "1",
      "last_state_change": "1373404110",
      "last_event_id": "0",
    }
}

在处理这个输出时,我已经为一些变量创建了一个变量赋值,但是我不知道应该如何使用通配符来代替'HTTP,PING,etc'

^{pr2}$

这是一种简单易行的方法吗?在一些json调用中,我知道。[]可以用作通配符。我试图用“*”代替上面的“[]”,但还没有成功。在

我的目标是从“HTTP”和“PING”所在的每个可能的条目中获取相同的数据块(在本例中为“last_state_change”)。在

任何帮助都将不胜感激,如果这是不可能的只是取代一些东西,我愿意接受任何建议。在


Tags: 数据jsonhttpcheckperformanceenabledpingchange
2条回答

您必须迭代得到的dict

changes = {}
for x in service['content']:
    changes[x] = service['content'][x]['last_state_change']

如果您只需要两个键,并且您知道这些键是哪一个,那么可以在代码中将它们定义为一个列表,并且只检索这些键的内容。在

import json
test = '''{
    "content": {
        "HTTP": {
            "obsess": "1",
            "check_command": "check_http",
            "active_checks_enabled": "1",
            "process_performance_data": "1",
            "last_state_change": "1421870740",
            "last_event_id": "1"
        },
        "PING": {
            "obsess": "1",
            "check_command": "check_ping!100.0,20%!500.0,60%",
            "active_checks_enabled": "1",
            "process_performance_data": "1",
            "last_state_change": "1373404110",
            "last_event_id": "0"
        },
        "somethingelse": {
            "obsess": "1",
            "check_command": "check_ping!100.0,20%!500.0,60%",
            "active_checks_enabled": "1",
            "process_performance_data": "1",
            "last_state_change": "1373404110",
            "last_event_id": "0"
        }

    }
}'''
json = json.loads(test)
print(json)
keys = ['HTTP', 'PING']
for key in json['content']:
    if key in keys:
        last_key_change = json['content'][key]['last_state_change']
        print(key, last_key_change)

相关问题 更多 >

    热门问题