Robotframeworkの場合、辞書オブジェクトにアクセスするにはcode 1
とcode 2
です。問題は、json.loadを使用してリストを返すjsonオブジェクトを変換し、jsonキーを単一の「ダブルカンマ」オブジェクトで返し、json.loadを使用しないときにUnicodeエラーが返されるということです。リスト内のディクショナリオブジェクトにアクセスする際にループをスローするとエラーが発生する: 'オブジェクトに属性がありません'キーまたはユニコード 'オブジェクトに属性がありません'キー
ここ
*** Settings ***
Library OperatingSystem
Library Collections
Library HttpLibrary.HTTP
*** Test Cases ***
Code1
#get json file
${json_data}= Get file detail.json
#get dictionaries under list
${valuelist}= Get Json Value ${json_data} /alladdress/addresslist
# display it
log to console ${valuelist}
# loop over dictionaries under list
: FOR ${key} in @{valuelist.keys()}
\ ${value}= Get From Dictionary ${valuelist} ${key}
# getting AttributeError: 'unicode' object has no attribute 'keys
\ log to console ${key},${value}
Code2
# get json file
${json_data}= Get file detail.json
# get dictionaries under list
${valuelist}= Get Json Value ${json_data} /alladdress/addresslist
# use below line to avoid unicode error
${obj_list}= evaluate json.loads('''${valuelist}''') json
# display it
log to console ${obj_list}
# loop over dictionaries under list
: FOR ${key} in @{obj_list.keys()}
\ ${value}= Get From Dictionary ${obj_list} ${key}
# getting AttributeError: 'list' object has no attribute 'keys'
\ log to console ${key},${value}
ライブラリーを定義することはJSONファイルは、キーワードGet json value
ではなく、文字列を返していることが表示されます
{
"class":{
"id":0,
"name":"David"
},
"alladdress":{
"count":3,
"addresslist":[
{
"houseno":1,
"streetno":5,
"streetname":"tesla",
"city":"ABC",
"state":"AA",
"country":"UK",
"zip":85555
},
{
"houseno":2,
"streetno":6,
"streetname":"honda",
"city":"PQR",
"state":"BB",
"country":"IN",
"zip":5252
}
]
}
}
@ブライアン。返信ありがとうございます。私は$で置き換えたが、それでも私は同じエラー(ユニコード)を得る – madhur
@ madhur:私の間違い。私は私の答えを更新しました。 –
私は/ alladdress/addresslistからの応答を得ようとしているので、$ {valuelist} = Json Value $ {json_data}/alladdress/addresslistを取得して解析し、$ {valuelist} 。あなたの答えでは、jsonファイル全体を使用しています。 – madhur