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