使用python读取json文件中的特定属性

时间:2015-07-24 10:30:48

标签: python json

我正在编写代码以使用python将json模型转换为SQLite。以下是json文件示例:

{  
    "type":"MetaModel",
    "entityName":{  
    "prefix":"Rail",
    "name":"LocationProvider"
},
"attributes":[  
    {  
        "name":"abc",
        "type":"string",
        "maxLength":10,
        "mandatory":true
    }
],
"constraints":[
    {
        "name": "PrimaryKey",
        "type": "SQLPK",
        "fields": [
            {  
                "name":"abc"
            }
        ]
    },
    {
        "name": "ForeignKeyOne",
        "type": "SQLFK",
        "fields": [
            { 
                "name":"ab"
            }
        ],
        "reference":{
            "entityName":{
                "prefix":"Rail",
                "name":"ProvinceState"
            },
            "fields":[
                {
                    "name":"Code"
                }
            ]
        }
    }
]

使用以下代码我能够读取外键约束。但是我正在努力阅读"参考"在SQLFK下。

if constraint["name"] ==  "ForeignKeyOne":
    for field in constraint["fields"]:
       fk_attribute_list.append(field["name"])

请帮助我阅读内容"参考"。

"reference":{
    "entityName":{
        "prefix":"Rail",
        "name":"ProvinceState"
     },
     "fields":[
          {
              "name":"Code"
          }
     ]
 }

2 个答案:

答案 0 :(得分:1)

您错过了属性级别(引用)。 怎么样:

if constraint["name"] ==  "ForeignKeyOne":
    for field in constraint["reference"]:
        if field == 'fields':
            for x in constraint["reference"][field]:
                print x

x将包含{' name':' Code'}

这非常静态,这意味着你假设你拥有的json结构与上面几乎相同。

答案 1 :(得分:0)

"参考"指向一个字典。迭代dict会产生dict键。因此,在for reference in constraint["reference"]循环中,reference将首先生成字符串"entityName",然后生成字符串"fields"。你显然明白"somestring"["another_string"]是没有意义的,因为字符串是基于索引的(整数)。