助け合いフォーラム

Cisco

CCNP ENCOR(350-401)
問題ID : 23770
問題を開く
以下のRESTCONFで設定情報を取得した結果について正しい記述はどれか。(2つ選択)

この問題はプレミアムコンテンツです。

上に戻る

JSONの記述ルールについて

投稿日 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の記述ルールに関わる内容を問うているわけではないので、そこまで気にしなくてもいいのかもしれませんね。)

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?