我正在比较一个json对象的所有元素是否都在另一个json中。 为此,我把所有的键都放在一个小图层上,然后检查它们是否在大图层中,以及它们是否相同。为了深入到更深层,我调用函数,给它一个包含更深层的元素。(在这个函数中,我现在用键“results”检测更深层的层,但我将来它将被更改为一个可变键。 我的问题是我不能调用递归函数。当试图调用函数中的函数时,它在脚本中说“字符串索引必须是整数,而不是unicode”。在
def compareJson(example_json_s, target_json_s):
#parsed_json
example_json = example_json_s
target_json = target_json_s
p = 0
keys = []
for key in example_json.keys():
keys.insert(p, key)
p = p + 1
passed = 0;
for x in keys:
print "Keys"
if x != "results":
if not x in target_json or x not in example_json.keys() and not example_json[x] == target_json[x]:
passed = 1
else:
print """###inhabits "results " going one layer deeper"""
compareJson(example_json[key], target_json[key])
return passed
以及一些json对象示例:
^{pr2}$错误代码如下:
Traceback (most recent call last):
File "/home/philip/Desktop/empfang_test.py", line 199, in <module>
empfange() #Programm wartet in einer Endlosschleife auf eingehende Nachrichten.
File "/home/philip/Desktop/empfang_test.py", line 193, in empfange
checkvalue=compareJson(json.loads(config[1][1]),parsed_json_dummy)
File "/home/philip/Desktop/empfang_test.py", line 183, in compareJson
compareJson(example_json[key],target_json[key])
TypeError: string indices must be integers, not str
这是我的解决方案
对于您的输入给出
^{pr2}$False
和给出
True
为了
例如,目标中缺少一个键(例如
qqq
),它给出False
你当然可以用
从JSON字符串开始时
我认为应该使用以下代码:
在第一个函数中,我们解析完整的JSON对象(包括递归部分)。第二部分分析了它们。在
我对你的代码做了几处修改。在
example_json.keys()
上迭代。另外,在您的示例中,我会将其替换为keys.append(key)
。在dict
(它已经被解析)。如果不是,那么它会比较它们,如果是,那么它就进入下一个。您可能需要为列表添加一个类似的子句。在False
。在编辑:对于您发布的错误代码,我认为您可能没有正确解析json。我认为您的注释
#parsed_json
是指您已经完成了,但是我认为您错过了上面代码示例中包含的json.loads
方法调用。。?在相关问题 更多 >
编程相关推荐