Iterate through JSON [Python] -
i reading following json file in python:
{ "name": "property", "base": "persistedmodel", "idinjection": true, "options": { "validateupsert": true }, "properties": { "uuid": { "type": "string" }, "userid": { "type": "number" }, "address": { "type": "string" }, "price": { "type": "number" }, "lastupdated": { "type": "string" } }, "validations": [], "relations": { "rooms": { "type": "hasmany", "model": "room", "foreignkey": "id" }, "addedbyuser": { "type": "hasmany", "model": "user_espc", "foreignkey": "id" } }, "acls": [], "methods": {} }
i trying read properties
, name of property (such "uuid") , each name want read type of object. far code lists of properties that:
property name: price property name: userid property name: uuid property name: lastupdated property name: address
the code is:
import json #json_file='a.json' json_file='common/models/property.json' open(json_file, 'r') json_data: data = json.load(json_data) propertyname = data["name"] properties = data["properties"] # print (properties) property in properties: print ('property name: ' + property) # propertytype = property["type"] # print (propertytype)
the problem when uncomment bottom 2 lines should type of property object error:
property name: price traceback (most recent call last): file "exportpropertytoandroid.py", line 19, in <module> propertytype = property["type"] typeerror: string indices must integers
iterating on dictionary yields keys. properties
dictionary:
properties = data["properties"]
and when iterate on in:
for property in properties: print ('property name: ' + property) # propertytype = property["type"] # print (propertytype)
property
references each key in turn. dictionary represents json data, keys strings , error quite self explanatory. property["type"]
trying character string @ indice "type"
.
instead should either use key property
fetch additional values dictionary:
for property in properties: print ('property name: ' + property) propertytype = properties[property]["type"] print(propertytype)
or iterate on keys , values:
for property, value in properties.items(): print ('property name: ' + property) propertytype = value["type"] print(propertytype)
Comments
Post a Comment