Български
Тема
Български
Тема
Във всеки пример с бутон Run на този сайт variable doc съдържа този документ. Той е като doc, който получава правилото за проверка: отчетът на едно устройство.
Примерният JSON документ е измислен
Всички имена и стойности в него са измислени; само формата е типична за JSON, който изпраща едно устройство.
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 - а Копирай копира пътя. Изтегли запазва файла.
{
"_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):
console.log(JSON.stringify(doc.overview, null, 2));
console.log(JSON.stringify(doc.inventory.enclosures[0], null, 2));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 |
Всеки файл със задача казва в началото кой файл използва и какво да търсите в него.