我正在编写代码以使用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"
}
]
}
答案 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"]
是没有意义的,因为字符串是基于索引的(整数)。