Skip to content

Commit 6155be6

Browse files
Add files via upload
1 parent c180b5b commit 6155be6

1 file changed

Lines changed: 93 additions & 0 deletions

File tree

docs/index.html

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
<!DOCTYPE html>
2+
<html lang="ru">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>MinJSON – Документация</title>
6+
<meta name="viewport" content="width=device-width, initial-scale=1">
7+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
8+
<style>
9+
body {
10+
background-color: #121212;
11+
color: #eee;
12+
}
13+
pre {
14+
background: #1e1e1e;
15+
color: #c9d1d9;
16+
padding: 1em;
17+
border-radius: 6px;
18+
overflow-x: auto;
19+
}
20+
h1, h2, h3 {
21+
color: #ffca28;
22+
}
23+
a {
24+
color: #90caf9;
25+
}
26+
</style>
27+
</head>
28+
<body class="container py-5">
29+
30+
<h1 class="mb-4">📘 MinJSON — JSON для C++20</h1>
31+
32+
<p>MinJSON — это лёгкая, производительная JSON-библиотека для C++20 с поддержкой:</p>
33+
<ul>
34+
<li>📌 C++20 concepts (<code>MinJSONValueType</code>)</li>
35+
<li>📌 Универсальный <code>std::any</code> для хранения значений</li>
36+
<li>📌 Безопасный доступ через пути: <code>"user.friends[0].name"</code></li>
37+
<li>📌 Макросная рефлексия для сериализации структур</li>
38+
<li>📌 Простая сериализация и десериализация</li>
39+
</ul>
40+
41+
<h2 class="mt-5">🔧 Поддерживаемые типы</h2>
42+
<p><code>int</code>, <code>double</code>, <code>bool</code>, <code>std::string</code>, <code>nullptr</code></p>
43+
<p><code>std::optional&lt;T&gt;</code>, <code>std::vector&lt;T&gt;</code> — если <code>T</code> также поддерживается</p>
44+
45+
<h2 class="mt-5">🚀 Быстрый старт</h2>
46+
<pre><code>#include "MinJSON.hpp"
47+
48+
MinJSON json;
49+
auto result = json.parse(R"({"name":"Alice","age":30})");
50+
51+
if (std::holds_alternative&lt;MinJSON::Error&gt;(result)) {
52+
std::cerr &lt;&lt; "Ошибка: " &lt;&lt; std::get&lt;MinJSON::Error&gt;(result) &lt;&lt; "\\n";
53+
}
54+
55+
const auto& val = std::get&lt;MinJSON::Value&gt;(result);
56+
std::string name = json.get&lt;std::string&gt;(val, "name");
57+
int age = json.get&lt;int&gt;(val, "age");
58+
</code></pre>
59+
60+
<h2 class="mt-5">🧩 Макросная рефлексия</h2>
61+
<pre><code>struct User {
62+
int id;
63+
std::string name;
64+
};
65+
66+
MINJSON_REGISTER_TYPE(User,
67+
MINJSON_FIELD(id)
68+
MINJSON_FIELD(name)
69+
)
70+
71+
MinJSON json;
72+
MinJSON_register_User(json);
73+
74+
User user{42, "Bob"};
75+
auto json_val = json.to_json(user);
76+
std::cout &lt;&lt; json.stringify(json_val, true);
77+
</code></pre>
78+
79+
<h2 class="mt-5">📘 Основные методы API</h2>
80+
<ul>
81+
<li><code>parse(string_view json)</code> — парсинг строки</li>
82+
<li><code>stringify(Value val)</code> — сериализация</li>
83+
<li><code>get&lt;T&gt;(Value, path, default)</code> — безопасный доступ с дефолтом</li>
84+
<li><code>get_checked&lt;T&gt;</code> — доступ с проверкой ошибок</li>
85+
<li><code>set(Value&amp;, path, value)</code> — установка значения по пути</li>
86+
<li><code>to_json(obj)</code> и <code>from_json&lt;T&gt;(val)</code> — через макросную рефлексию</li>
87+
</ul>
88+
89+
<h2 class="mt-5">📄 Лицензия</h2>
90+
<p>MIT License — свободно для личного и коммерческого использования.</p>
91+
92+
</body>
93+
</html>

0 commit comments

Comments
 (0)