我无法通过嵌套Json文件进行解析,因为返回的是Unicode类型,而不是数组或列表



我正在尝试获取每个json元素的值。我希望类型是数组或列表,但我得到的却是unicode类型。

这是我的示例json文件:

{
"accounts": [
{
"account": {
"basicDetails": {
"accountId": {
"acctName": "Test A",
"acctNumber": "Test B"
},
"accountBranchId": {
"branchName": "Test C",
"brancNumber": "Test D"
},
"cusName": "Test E"
},
"otherDetails": {
"dateCreated": "1999-10-01",
"dateClosed": "2000-10-01"
}
}
}
],
"userExtension": {
"testId": null,
"version": null
},
"status": {
"overallStatus": "S",
"messages": null
},
"_links": null
}

这是我目前正在尝试的代码

def extract_key(self,obj):
def extract(obj):
if type(obj)== type(OrderedDict()) or isinstance(obj, list):
for k, v in obj.items():
if type(v) == type(OrderedDict()) or type(v)==type(list):
extract(v)
elif type(v) != type(OrderedDict()) or type(v)!=type(list):
print(type(k))
print(k)
results = extract(obj)
return results
def print_keys(self):
with open("C:\Account.json", "r+") as jsonFile:
data = json.load(jsonFile, object_pairs_hook=OrderedDict)
names = self.extract_key(data)
return names

我希望得到"accounts"后面的元素:[但它不会通过,因为它将"accounts"视为unicode,而不是列表或数组。

你问过这个

if type(obj)== type(OrderedDict()) or isinstance(obj, list): 

并输入"账户",这没关系

那么你只需要:

for k, v in obj.items():
if obj.items():
results.append(v)

结果加载了:

[OrderedDict([('account', OrderedDict([('basicDetails', OrderedDict([('accountId', OrderedDict([('acctName', 'Test A'), ('acctNumber', 'Test B')])), ('accountBranchId', OrderedDict([('branchName', 'Test C'), ('brancNumber', 'Test D')])), ('cusName', 'Test E')])), ('otherDetails', OrderedDict([('dateCreated', '1999-10-01'), ('dateClosed', '2000-10-01')]))]))])], OrderedDict([('testId', None), ('version', None)]), OrderedDict([('overallStatus', 'S'), ('messages', None)]), None]

当然,在此之前必须声明结果,比如:

results = []

相关内容

最新更新