使用Python访问JSON中的所有元素

时间:2018-03-05 16:09:12

标签: python json

我的JSON中有以下结构:

{
    "function": "ComAl_Set_nad_crtl_xcall_state",
    "timeStamp": 1488516897797,
    "Param1": "SIG_NAD_CRTL_XCALL_STATE",
    "Value1": "8"
},
{
    "function": "ComAl_Set_nad_crtl_xcall_state",
    "timeStamp": 1488516912217,
    "Param1": "SIG_NAD_CRTL_XCALL_STATE",
    "Value1": "10"
},

我通过使用以下方法创建此json:

def get_json_from_stub(self, file_name):
    def jsonize_stub(raw_data):
        end = raw_data.rfind(",")
        parsed_data = "[" + raw_data[:end] + "]" 
        return json.loads(parsed_data.replace("\00", ""))

    command = "'cat "  + self.stub_path + file_name + "'"
    content =  self.send_ssh_command(command)
    json_stub = jsonize_stub(content)
    return json_stub

到目前为止,我只需要JSON中的最后一个值1,我得到这样的结果:

def get_last_element(self, json_stub, value='Value1'):
    last_element_from_json = json_stub[-1].get(value)
    if len(json_stub) > 0 and last_element_from_json is not None:
        return last_element_from_json
    else:
        pass

我的问题是我是否可以获得前一个值1(例如在我的JSON value1:8和value1:10中)因为现在,我使用json_stub [-1]得到这个值,它总是给我最后一个值?感谢。

1 个答案:

答案 0 :(得分:2)

使用-2从最后获得第二个。

json_stub[-2] 

在Python中,负索引指向列表从右到左的元素,而不是默认的从左到右。 -1代表最后一个元素(从左到右),-2代表最后一个元素(从左到右)等。