Getting values from JSON using Python
Asked Answered
D

5

115

While I am trying to retrieve values from JSON string, it gives me an error:

data = json.loads('{"lat":444, "lon":555}')
return data["lat"]

But, if I iterate over the data, it gives me the elements (lat and lon), but not the values:

data = json.loads('{"lat":444, "lon":555}')
    ret = ''
    for j in data:
        ret = ret + ' ' + j
return ret

Which returns: lat lon

What do I need to do to get the values of lat and lon? (444 and 555)

Dallasdalli answered 10/9, 2012 at 14:0 Comment(4)
Your first example works for me. What is the error it gives you?Hoffarth
(unrelated), your second loop can be written as ' '.join(data)Hoffarth
Using GAE with Python 2.7 and Bottle, it gives me "INFO 2012-09-10 13:54:58,583 dev_appserver.py:2967] "POST /app/939393/position HTTP/1.1" 500 -" on GAE Log consoleDallasdalli
error traceback could be useful here, as the code in the first part is ok. it can't throw an error related to the question (for python 3.6 at least), error has to be in the import or function use (as return present)Gerick
P
141

If you want to iterate over both keys and values of the dictionary, do this:

for key, value in data.items():
    print(key, value)
Perpendicular answered 10/9, 2012 at 14:4 Comment(0)
H
93

What error is it giving you?

If you do exactly this:

data = json.loads('{"lat":444, "lon":555}')

Then:

data['lat']

SHOULD NOT give you any error at all.

Heterogamete answered 10/9, 2012 at 14:4 Comment(0)
B
21

Using Python to extract a value from the provided Json

Working sample:

import json
import sys

# load the data into an element
data = {"test1": "1", "test2": "2", "test3": "3"}

# dumps the json object into an element
json_str = json.dumps(data)

# load the json to a string
resp = json.loads(json_str)

# print the resp
print(resp)

# extract an element in the response
print(resp['test1'])
Bluegill answered 19/2, 2016 at 16:23 Comment(4)
data.json()['test1'] !!!!Orella
@Sireesh Yarlagadda The code works if I put the JSON format inside the json.loads(...). But If I need to load the JSON file as a "myfile.json" with the related commands, it outputs an error.... What should I do??Fleur
Does anyone read my question?Fleur
import json file_path = 'data.json' with open(file_path, 'r') as file: data = json.load(file) print(data)Bluegill
C
6

Using your code, this is how I would do it. I know an answer was chosen, just giving additional options.

data = json.loads('{"lat":444, "lon":555}')
    ret = ''
    for j in data:
        ret = ret+" "+data[j]
return ret

When you use "for" in this manner you get the key of the object, not the value, so you can get the value by using the key as an index.

Cocksure answered 1/3, 2013 at 23:43 Comment(1)
iterating over keys and then getting the respective values from the dict is discouraged in python. use for key, value in data.items(): instead. It is more readable and less error-prone (also more efficient if one would care about that)Glair
H
6

There's a Py library that has a module that facilitates access to Json-like dictionary key-values as attributes: pyxtension and Github source code

You can use it as:

j = Json('{"lat":444, "lon":555}')
j.lat + ' ' + j.lon
Hobble answered 17/10, 2015 at 19:22 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.