Към съдържанието

Примерният JSON документ ​

Във всеки пример с бутон Run на този сайт variable doc съдържа този документ. Той е като doc, който получава правилото за проверка: отчетът на едно устройство.

Примерният JSON документ е измислен

Всички имена и стойности в него са измислени; само формата е типична за JSON, който изпраща едно устройство.

Къде да го намерите ​

  • В homework repository: data/sample-asset.json. Отворете го във VSCode, за да го видите с цветове и да свиете частите, които не ви трябват.
  • Задачите го зареждат с require (обяснено в занятие 9): const doc = require("../../data/sample-asset.json");
  • Документът расте по време на курса: лекция добавя нова част, когато ѝ трябва (например inventory.modules в лекция 6). Тази страница винаги показва текущата версия. След git pull --no-rebase --no-edit upstream main вашето копие е същото.

Целият документ ​

Отворете го в прегледа:

Разгледайте файловете с данни

Щракване върху името на файл го отваря в преглед. Дърво показва нивата на документа: отваряйте и затваряйте ги със стрелките. Пътища изброява всяка стойност с пълния ѝ път, а филтърът намира ключ или стойност. Таблици показва всеки списък от записи (и всеки речник от записи) като таблица. Текст показва файла такъв, какъвто е, с номера на редовете. Щракване върху стойност показва пътя до нея така, както го чете вашият код - doc.inventory.modules["12_4.20"].status - а Копирай копира пътя. Изтегли запазва файла.

json
{
  "_note": "MADE-UP example JSON document for the course. All names, ids and values are invented; only the shape is typical of the JSON a device sends.",
  "status": {
    "device_alias": "D7F3A9C21E40B815",
    "epoch": "1791770402"
  },
  "overview": {
    "model": "XR-220",
    "serial_number": "SN4X7Q92",
    "version": "4.2.1.7"
  },
  "alerts": {
    "CHK-0132": {
      "raised": "yes"
    }
  },
  "inventory": {
    "device_alias": "D7F3A9C21E40B815",
    "details": {
      "remote_login_cert_set": "no",
      "remote_login_configured": "yes",
      "remote_login_enabled": "yes",
      "remote_login_pwd_set": "no",
      "remote_login_type": "central",
      "bandwidth": "",
      "power_saving": "on",
      "locale": "en_US",
      "ntp_ip_address": "10.0.0.1",
      "device_id": "D7F3A9C21E40B815",
      "device_alias": "D7F3A9C21E40B815",
      "firmware_level": "4.2.1.7 (build 412.17.2607151200)",
      "consoles": "CON-01;CON-02",
      "settings": "SA=2,SG=1,SN=2"
    },
    "extended_info": {
      "json": {
        "data": {
          "system": {
            "name": "LAB-DEV-01"
          }
        }
      }
    },
    "features": [
      "dedup",
      "compression",
      "encryption"
    ],
    "enclosures": [
      {
        "id": "ENC-01",
        "type": "SSD-24",
        "firmware": "2.14",
        "state": "normal"
      },
      {
        "id": "ENC-02",
        "type": "SSD-24",
        "firmware": "2.10",
        "state": "normal"
      },
      {
        "id": "ENC-03",
        "type": "HDD-12",
        "firmware": "2.14",
        "state": "degraded"
      },
      {
        "id": "ENC-04",
        "type": "HDD-12",
        "firmware": "2.10",
        "state": "normal"
      }
    ],
    "modules": {
      "12_4.20": {
        "status": "OK",
        "installed": "2025-11-20"
      },
      "12_4.08": {
        "status": "OK",
        "installed": "2025-11-21"
      },
      "47_1.07": {
        "status": "FAILED",
        "installed": "2025-11-20"
      }
    },
    "labels": {
      "Firmware Version": "4.2.1.7",
      "Last Check": "12-10-2026 18:25:23",
      "Site": "Demo Lab"
    }
  }
}

console.log(doc) отпечатва обекта на един ред и показва по-дълбоките нива само като [Object]. За да видите част от документа с отстъпи, превърнете я в текст с JSON.stringify(value, null, 2) (2 = два интервала на ниво; повече за JSON в занятие 9):

js
console.log(JSON.stringify(doc.overview, null, 2));
console.log(JSON.stringify(doc.inventory.enclosures[0], null, 2));
Променете кода и го изпълнете отново

Сменете пътя и натиснете Run, за да разгледате друга част, или отпечатайте целия документ с JSON.stringify(doc, null, 2). console.dir(doc, { depth: null }) също показва всички нива (на един ред), а console.table(doc.inventory.enclosures) показва списък от записи като таблица (занятие 7).

Всяко изпълнение започва с ново копие

Пример, който променя doc (добавя, променя или изтрива ключ), променя само собственото си копие. Файлът и другите примери на страницата остават същите.

Другите файлове с данни на домашните ​

Някои задачи използват по-големи измислени документи - в другите форми, в които идват истинските данни. Те са в същата папка data/ на homework repository:

ФайлФормаИзползва се в
плосък списък от 79 записа ключ/стойност { group, item, code, label, value }, които трябва да се групиратзанятия 4, 7 и 8
dictionaries с ключове id, с точки в ключовете; дати и версии в смесени форматизанятия 5 - 8
един и същ дълбок документ два пъти: вложен (_source) и като сплескан (flattened) експорт (fields, където всеки ключ е цял път: "a.b.c": [value])занятия 6 и 8
reports/пет малки доклада във формата на doc, за пускане на правило върху папка: е наред, има проблеми, е друг модел, има липсващи части, а не е валиден JSON - нарочнозанятия 9 и 10

Всеки файл със задача казва в началото кой файл използва и какво да търсите в него.

Създаден за