Материал из Скретч Вики

JavaScript Object Notation, или JSON, это формат данных, используемый Скретч для хранения информации в проектах о спрайтах и скриптах. Он основан на JavaScript, языке программирования, на котором написан Скретч 3.0. Информация экспортированного проекта хранится в файле JSON с именем project.json, а информация экспортированного спрайта хранится в файле с именем sprite.json (JSON-проекты можно загрузить с URL-адреса https://projects.scratch.mit.edu/, за которым следует идентификатор проекта).

Синтаксис

Объекты

В JSON объект связывает имена со значениями. Они написаны с использованием синтаксиса {"name1": value1, "name2": value2, …, "namen": valuen}. Значения могут быть любого типа; они могут даже быть другими объектами. Например, {"answer": 42} представляет собой объект, связывающий имя "answer" со значением 42.

Массивы

Массив представляет собой последовательность значений, похожая на список в Скретч. Они написаны с использованием синтаксиса [element1, element2, …, elementn]. Элементами могут быть значения любого типа, даже другие массивы.

Числа

Числа обозначены цифрами. Фракции должны быть записаны как десятичные дроби (с использованием точек), а тысячи не разделяются, как в Скретч.

Строки

Строки представляют текст. Они написаны между двойными кавычками, например: "hello". Некоторые символы должны быть написаны с использованием обратной косой черты.

Экранирование обратной косой чертой - это размещение обратной косой черты перед символом, чтобы использовать его в строке, где его нельзя было бы использовать иначе, или использование нотации для вставки специального символа, когда было бы неудобно вставлять его непосредственно. Например, "\"" представляет кавычку, "\\" представляет одну обратную косую черту и "\b" представляет перевод каретка на шаг назад.

Логические значения

Логические значения являются истиной и ложью, и записываются, как true и false

Null

Null - это значение, которое ничего не представляет и записывается как null.

Использование JSON

JavaScript предоставляет объект JSON, который позволяет читать и писать JSON:

JSON.stringify({a: [1, 2, 3]})	// ===> "{\"a\":[1,2,3]}"
JSON.parse("{\"a\":[1,2,3]}")	// ===> {a: [1, 2, 3]}

Python предоставляет модуль для этой цели. На веб-сайте JSON представлен обширный список библиотек для чтения и записи JSON на разных языках программирования.

Пример

Вот файл стандартного проекта Scratch 3.0 project.json с добавленными пробелами:

{
    "targets": [
        {
            "isStage": true,
            "name": "Stage",
            "variables": {
                "Z[o`{!h48F+n]q_]ASoC": ["my variable", 0]
            },
            "lists": {},
            "broadcasts": {},
            "blocks": {},
            "comments": {},
            "currentCostume": 0,
            "costumes": [
                {
                    "assetId": "cd21514d0531fdffb22204e0ec5ed84a",
                    "name": "backdrop1",
                    "md5ext": "cd21514d0531fdffb22204e0ec5ed84a.svg",
                    "dataFormat": "svg",
                    "rotationCenterX": 240,
                    "rotationCenterY": 180
                }
            ],
            "sounds": [
                {
                    "assetId": "83a9787d4cb6f3b7632b4ddfebf74367",
                    "name": "pop",
                    "dataFormat": "wav",
                    "format": "",
                    "rate": 44100,
                    "sampleCount": 1032,
                    "md5ext": "83a9787d4cb6f3b7632b4ddfebf74367.wav"
                }
            ],
            "volume": 100,
            "layerOrder": 0,
            "tempo": 60,
            "videoTransparency": 50,
            "videoState": "on",
            "textToSpeechLanguage": null
        },
        {
            "isStage": false,
            "name": "Sprite1",
            "variables": {},
            "lists": {},
            "broadcasts": {},
            "blocks": {},
            "comments": {},
            "currentCostume": 0,
            "costumes": [
                {
                    "assetId": "b7853f557e4426412e64bb3da6531a99",
                    "name": "costume1",
                    "bitmapResolution": 1,
                    "md5ext": "b7853f557e4426412e64bb3da6531a99.svg",
                    "dataFormat": "svg",
                    "rotationCenterX": 48,
                    "rotationCenterY": 50
                },
                {
                    "assetId": "e6ddc55a6ddd9cc9d84fe0b4c21e016f",
                    "name": "costume2",
                    "bitmapResolution": 1,
                    "md5ext": "e6ddc55a6ddd9cc9d84fe0b4c21e016f.svg",
                    "dataFormat": "svg",
                    "rotationCenterX": 46,
                    "rotationCenterY": 53
                }
            ],
            "sounds": [
                {
                    "assetId": "83c36d806dc92327b9e7049a565c6bff",
                    "name": "Meow",
                    "dataFormat": "wav",
                    "format": "",
                    "rate": 44100,
                    "sampleCount": 37376,
                    "md5ext": "83c36d806dc92327b9e7049a565c6bff.wav"
                }
            ],
            "volume": 100,
            "layerOrder": 1,
            "visible": true,
            "x": 0,
            "y": 0,
            "size": 100,
            "direction": 90,
            "draggable": false,
            "rotationStyle": "all around"
        }
    ],
    "monitors": [],
    "extensions": [],
    "meta": {
        "semver": "3.0.0",
        "vm": "0.2.0-prerelease.20190515153227",
        "agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) ScratchDesktop/3.3.0 Chrome/69.0.3497.128 Electron/4.2.0 Safari/537.36"
    }
}

Смотрите также