Files
json/index.html

120 lines
4.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>json</title>
<style>
html, body {
margin: 0;
padding: 0;
overflow: hidden;
}
body {
height: 100vh;
width: 100vw;
}
</style>
</head>
<body>
<script>
var мир = {};
мир.строкаПути = function(п) {
function вСтроку(ключ) {
return `["${ключ}"]`;
}
return "мир" + п.map(вСтроку).join("") + " = ";
};
мир.создатьПуть = function(путь) {
var уровень = мир;
var длина = путь.length;
for (var i = 0; i < длина; ++i)
{
var п = путь[i];
if (!уровень[п])
{
уровень[п] = {};
}
else
{
уровень = уровень[п];
}
}
};
мир.разобрать = function(словарь, путь = []) {
for (ключ in словарь)
{
var внутреннийПуть = путь.slice();
внутреннийПуть.push(ключ);
var значение = словарь[ключ];
мир.создатьПуть(внутреннийПуть);
if (typeof значение === "string")
{
// Функция.
if (значение.startsWith("function"))
{
var содержимое = мир.строкаПути(внутреннийПуть) + значение;
eval(содержимое);
}
// Строка.
else
{
var содержимое = мир.строкаПути(внутреннийПуть) + '"' + значение + '"';
eval(содержимое);
}
}
// Вложенный объект/слоарь.
else if (значение === Object(значение))
{
мир.разобрать(значение, внутреннийПуть);
}
// Неизвестное.
else
{
console.error("неизвестная пара ключ/значение", ключ, значение);
}
}
};
var json1 = {};
json1.вывести = function(аргумент) {
console.debug('выводим аргумент:', аргумент);
}.toString();
json1.пример = function(аргумент) {
мир.вывести("уга");
console.debug("функция-пример исполнена. аргумент:", аргумент);
}.toString();
json1.набор = {
проба: function() {
console.debug("это проба");
}.toString(),
простоСтрока: "уппамам",
глубже: {
ещё: {
функция9на12: function(аргумент) {
console.debug(ункция9на12", аргумент);
}.toString(),
опятьСтрока: "ого",
},
},
};
json2 = JSON.stringify(json1);
console.debug("2", json2);
var json3 = JSON.parse(json2);
console.debug("3", json3);
мир.разобрать(json3);
console.debug("мир.пример", мир.пример);
мир.пример(123);
мир.вывести(77);
console.debug("мир", мир);
</script>
</body>
</html>