【发布时间】:2017-07-26 01:03:59
【问题描述】:
我有这个 JSON 对象,我喜欢更新对象中的一个值。我找到了一种方法,我应该如何在 stackoverflow (Json handling in ROBOT) 上执行此操作,但它失败了,我不明白为什么。
这是对象:
{"elementKey":"P690-C0-C3-B1","fields":[{"key":"P690-C1-C2-C1-C1-C1-F0","values":[]},{"key":"P690-C0-C2-F8","values":["1200"]},{"key":"P690-C0-C2-F9","values":["22000"]},{"key":"P690-C0-C2-F11","values":["I"]},{"key":"P690-C0-C2-F10","values":["2200"]},{"key":"P690-C0-C2-C0-C0-F0","values":["98-zsg-2"]},{"key":"P690-C1-C0-C0-F1","values":["Personenauto"]},{"key":"P690-C1-C0-C0-F2","values":["Personenauto KVP"]},{"key":"P690-C0-C2-F6","values":["B"]},{"key":"P690-C0-C2-F7","values":["75"]},{"key":"P690-C0-C2-F4","values":["2"]},{"key":"P690-C0-C2-F5","values":["5"]},{"key":"P690-C0-C2-F2","values":["model"]},{"key":"P690-C0-C2-F3","values":["2017"]},{"key":"P690-C1-C2-C2-C2-C1-F0","values":[]},{"key":"P690-C0-C2-F1","values":["merk"]}]}
在给定链接的启发下,我在机器人框架中进行了此测试。
${json_string}= Set Variable "see text above"
${json}= Evaluate json.loads('''${json_string}''') json
Set To Dictionary ${json["fields"]} ${new_value}
${json_string}= evaluate json.dumps(${json}) json
使用 ${new_value} 我尝试了 value=shizzleliz, value[0]=shizzleliz, value[1]=shizzleliz, P690-C1-C2-C1-C1-C1-F0=shizzleliz
全部报错:AttributeError: 'list' object has no attribute 'update'
当我将 ${json["fields"]} 更改为 ${json} 时,将给定值设置为库,但不在字段部分/集合中。
有人知道我做错了什么吗?如果您对我如何更新该值有任何建议,我非常希望 :)
目标是改变:{"key":"P690-C1-C2-C1-C1-C1-F0","values":[]}
至:{"key":"P690-C1-C2-C1-C1-C1-F0","values":["shizzleliz"]}
【问题讨论】:
-
您正在尝试在列表
${json["fields"]}上申请Set To Dictionary。 -
感谢您的遮阳篷,但是当我使用设置列表值时,会添加 shizzleliz。我改变了我的问题,也许你可以在正确的方向上帮助我?
标签: python json robotframework