助け合いフォーラム
CCNP ENCOR(350-401)
問題ID : 23770
問題を開く
以下のRESTCONFで設定情報を取得した結果について正しい記述はどれか。(2つ選択)
この問題はプレミアムコンテンツです。
JSONの記述ルールについて
3
3yamot
公開日 2023/08/01
解説によると、「設問の結果はRESTCONFで取得したインターフェースの設定情報をJSON形式で出力しています。」とありますが、
設問の出力結果を見ると、文字列をシングルクオーテーションで囲っているように見えます。
これはJSON形式の記述ルールである、「文字列はダブルクオーテーションで囲む」に反していないのでしょうか?
ご回答いただけますと幸いです。
よろしくお願いします。
2023/08/01 09:38
設問の出力結果を見ると、文字列をシングルクオーテーションで囲っているように見えます。
設問の出力だけだと確かにそうなのですが、解説には以下の記述があります。
この結果は下記のPythonコードで取得しています。
で、そのコードの中では
pprint.pprint(response.json())
とあるので、Pythonのフォーマットで出力されてるだけです。requestsモジュールのresponse.json()って、レスポンスのデータをPythonの辞書で返すものなので、この時点でJSON形式から変わります。
ちなみに、どこかで変更があったのか、Sandboxのアクセス情報や応答のデータが変わってたっぽいので以下のコードで情報を取得したところこうなりました。
import requests
import pprint
requests.packages.urllib3.disable_warnings()
host = "sandbox-iosxe-recomm-1.cisco.com"
username = "developer"
password = "lastorangerestoreball8876"
port = 443
url = f"https://{host}:{port}/restconf/data/ietf-interfaces:interfaces/interface"
headers = {"Content-type": "application/yang-data+json",
"Accept": "application/yang-data+json"}
response = requests.get(url, auth=(username, password), headers=headers, verify=False)
print(response.text)
結果
$ python3 testcode.py
{
"ietf-interfaces:interface": [
{
"name": "GigabitEthernet1",
"description": "IPv6 ADDRESS",
"type": "iana-if-type:ethernetCsmacd",
"enabled": true,
"ietf-ip:ipv4": {
"address": [
{
"ip": "10.10.20.48",
"netmask": "255.255.255.0"
}
]
}
{
"errors": {
"error": [
{
"error-message": "Bad return value",
"error-path": "/ietf-interfaces:interfaces/interface=GigabitEthernet1/ietf-ip:ipv6/address",
"error-tag": "operation-failed",
"error-type": "application"
}
]
}
}
}
ちゃんとダブルクオーテーションで囲まれています。ということで
これはJSON形式の記述ルールである、「文字列はダブルクオーテーションで囲む」に反していないのでしょうか?
- RESTCONFで返ってくるデータはちゃんとJSON形式にしたがっています。
- Pythonなどで取得した場合は、間で見え方が変更される場合があります。
コメント
この投稿に対して返信しませんか?
3 3yamot
2023/08/02 23:30
お返事遅れてすみません! >requestsモジュールのresponse.json()って、レスポンスのデータをPythonの辞書で返すものなので、この時点でJSON形式から変わります。 ここの理解ができていませんでした、ありがとうございます! ただ、設問の出力結果が、このコードを使って出力した結果だということは、設問からだけでは読み取れないですよね… (この問題はJSONの記述ルールに関わる内容を問うているわけではないので、そこまで気にしなくてもいいのかもしれませんね。)