shaveax shaveax - 7 months ago 28
Python Question

how to print specific values from a json file with python?

im new using python and i would like to know how can i print some values from my json file using python, the following is my json file

{
"igt@gem_reloc_overflow@single-overflow": {
"__type__": "TestResult",
"command": "/home/gfx/intel-graphics/intel-gpu-tools/tests/gem_reloc_overflow --run-subtest single-overflow",
"dmesg": "",
"environment": "PIGLIT_PLATFORM=\"mixed_glx_egl\" PIGLIT_SOURCE_DIR=\"/home/gfx/intel-graphics/intel-gpu-tools/piglit\"",
"err": "(gem_reloc_overflow:19562) CRITICAL: Test assertion failure function reloc_tests, file gem_reloc_overflow.c:260:\n(gem_reloc_overflow:19562) CRITICAL: Failed assertion: __gem_execbuf(fd, &execbuf) == -14\n(gem_reloc_overflow:19562) CRITICAL: error: -22 != -14\nSubtest single-overflow failed.\n**** DEBUG ****\n(gem_reloc_overflow:19562) DEBUG: relocation_count=4294967295\n(gem_reloc_overflow:19562) CRITICAL: Test assertion failure function reloc_tests, file gem_reloc_overflow.c:260:\n(gem_reloc_overflow:19562) CRITICAL: Failed assertion: __gem_execbuf(fd, &execbuf) == -14\n(gem_reloc_overflow:19562) CRITICAL: error: -22 != -14\n**** END ****\n",
"exception": null,
"out": "IGT-Version: 1.14-g1e9a3ac (x86_64) (Linux: 4.6.0-rc4-drm-intel-nightly-ww17-commit-1e81bac+ x86_64)\nStack trace:\n #0 [__igt_fail_assert+0x101]\n #1 [reloc_tests+0x6d6]\n #2 [<unknown>+0x6d6]\nSubtest single-overflow: FAIL (8.469s)\n",
"pid": 19562,
"result": "fail",
"returncode": 99,
"subtests": {
"__type__": "Subtests"
},
"time": {
"__type__": "TimeAttribute",
"end": 1462072402.5360818,
"start": 1462072393.7328644
},
"traceback": null
}
}


and the value that i need is "result : fail".

so far i have this code :

import json

with open("9.json") as json_file:
json_data = json.load(json_file)
print(json_data)


thaks

Answer

Give this a shot!

for key, value in json_data.iteritems():
    result = value['result']

print result

UPDATE (for question in comments): If you have multiple files and want to store all of the info at once - try throwing it all into a dictionary. This can vary depending on what you want the key to be. But try this (this will create a dicitonary of {json_key: result_value}:

all_results = {}
json_file_list = ['file_1.txt', 'file_2.json']
for file in json_file_list:
    with open(file) as json_file:
        json_data = json.load(json_file)
        for key, value in json_data.iteritems():
            if 'result' in value:
                all_results[key] = value['result']
return all_results
Comments