无法使用 python 从 Json 文件中获取特定值

By simon at 7 天前 • 0人收藏 • 6人看过

我很难从我的 json 文件中获得一些数据。 我能够得到一些数据,但当我想挖掘更多的细节,我得到的错误和卡在没有地方。

运行下面的脚本将返回一个错误

对象没有属性 get

我知道这是一个列表,但我不确定如何获得对象列表的其余部分。

剧本

文件打开('source.json','r') ile open ('extract.json','w') json decode json.load (ifile) myresult ] for item in json decode: mydict mydict [ sID'] item.get ('Ls id') my item.get ('items'items')。 (「连结 ID 」)。 ('Metric'). 获得('Link Type') mydict ['Type'] item.get ('Type') myresult.append (myjson json.dump (myresult,ofile) ofiled. write (myjson) . close ()

源 Json 文件

{"Ls 年龄":"201","项目": [{"Link ID":"1.1.1.2","Link Type":"StubNet","Metric":"1","Data":"255.255.255.255","Priority":"Medium"} ,{"Link ID":"1.1.1.4","Link Type":"P-2-P","Metric":"1","Data":"192.168.100.34",{"ID Link":"192.168.100.33",} 句子太长,请短一点 句子太长,请短一点

预计结果如下

句子太长,请短一点

请告知如何进一步开展工作。 我四处搜索,尝试错误,仍然无法解决它。 感谢你的建议和支持。 谢谢你

4 个回复 | 最后更新于 7 天前
7 天前   #1

你应该能够像字典一样访问这些值,例如:

文件打开('source.json','r') of ile open ('extract.json','w') json json.decode (ifile) myresult ] for item in json decode: my} mydict ['sID'] item ['Ls ID'] my dict ['items']['Link ID']['Metric']['Link Type'] myitem ['Type'] myresult ['Type'] myresult

这对你有用吗? 如果没有,您会遇到什么错误?

7 天前   #2

你需要遍历设备,然后遍历设备['items']

用 open ('source.json','r')作为 ifile: json data json.load (ifile) my result ] for device in json data: for item in device.get ('items',[]) : my dict } my ['Type'] device.get ('Type') my dict [''ID'] device.get ('Ls ID') my dict ['dID'item.get ('Link ID') my dict ['Link ID') my dict ['Link Type'] . get ('Link Type') my item.get ('Link Type') my result。 用 open ('extract.json','w')追加(my dict) as ofile: json.dump (my result,ofile,indent 4)

对于结构化程度更高的代码,可能需要定义一个函数,该函数将设备 / 项作为参数,对其进行解析,并返回 dicts / dict 列表

7 天前   #3

首先,你得到一个列表项目[项目]. 您需要决定是否需要保存列表中的所有可用值。

其次,您试图同时访问 dict 中的多个属性,但是您正在链接得到命令。 然而,代码试图将其视为嵌套的 dict,并且会遇到数据类型错误。

第三,你实际上不需要打字得到就像这样,一个简洁的版本就是使用方括号符号。

假设您需要为列表中的每个项目创建新 dict项目[项目]解决方案应该是这样的:

"输入 json s" {"Ls 年龄":"201","项目": [{"Link ID":"1.1.1.2","Link Type":"StubNet","Metric":"1","Data":"255.255.255.255","Priority":"Medium"} ,{"Link ID":"1.1.1.4","Link Type":"P-2-P","Metric":"1","Data":"192.168.100.34",{"ID Link":"192.168.100.33",} 句子太长,请短一点 句子太长,请短一点 ,"Len":"96","Ls id":"1.1.1.1","chksum":"0x16fc","Adv rtr":"1.1.1","Type":"Router","Options":"ASBR e","Link count":"6"}]"'输入 lst json。 Mydict } mydict item ['Ls ID'] mydict Type item ['Type'] temp [] for x in item ['items'] : mydict'ID': mydict sid,'Type': mydict ID': x ['Link ID'] ,'Metric': x ['Metric'] ,'Link temp': x ['Link Type']}. 附加(mydict)我的结果。 延长(临时)

一定要根据需要修改我用来读取字符串的代码行。

7 天前   #4

问题是项目[项目]也是一个列表,所以你需要一个内部循环来处理它的所有元素。 此外,您必须逐个提取每个值:

Mydict ['Type'] sub.get ('Metric') myresult.append (mydict)

登录后方可回帖

Loading...