https://github.com/battlegrounds/minjson
Minimalistic JSON library for modern C++20
https://github.com/battlegrounds/minjson
cpp20 json minimal modern-cpp
Last synced: about 1 year ago
JSON representation
Minimalistic JSON library for modern C++20
- Host: GitHub
- URL: https://github.com/battlegrounds/minjson
- Owner: BattleGrounds
- License: other
- Created: 2025-06-20T12:53:02.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-20T13:56:39.000Z (about 1 year ago)
- Last Synced: 2025-06-20T14:41:14.361Z (about 1 year ago)
- Topics: cpp20, json, minimal, modern-cpp
- Language: C++
- Homepage: https://battlegrounds.github.io/MinJSON/
- Size: 19.5 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# π§© MinJSON β ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΠΈΡΠ½Π°Ρ JSON-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ C++20
**MinJSON** β ΡΡΠΎ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½Π°Ρ, Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½Π°Ρ JSON-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ:
- β
C++20-ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΎΠ² (`MinJSONValueType`)
- β
ΠΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
- β
Π’ΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΡΠ΅ΡΠ΅Π· ΠΏΡΡΠΈ (`"user.name[0].value"`)
- β
ΠΠ°ΠΊΡΠΎΡΠ½ΠΎΠΉ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΠΈ (Π² ΡΡΠΈΠ»Π΅ `nlohmann::json`)
- β
ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΡΠ΅ΠΉ (`thread_local`)
- β
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ STL: `std::string`, `std::vector`, `std::optional`
## π ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
### π ΠΠ°ΡΡΠΈΠ½Π³ ΠΈ Π΄ΠΎΡΡΡΠΏ
```cpp
#include "MinJSON.hpp"
int main() {
MinJSON json;
auto result = json.parse(R"({"user":{"name":"Alice","age":30}})");
if (std::holds_alternative(result)) {
std::cerr << "Error: " << std::get(result) << "\n";
return 1;
}
const auto& data = std::get(result);
std::string name = json.get(data, "user.name");
int age = json.get(data, "user.age");
std::cout << name << " is " << age << " years old\n";
}
```
### π ΠΠ°ΠΊΡΠΎΡΠ½Π°Ρ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΡ
```cpp
#include "MinJSON.hpp"
struct User {
int id;
std::string name;
};
MINJSON_REGISTER_TYPE(User,
MINJSON_FIELD(id)
MINJSON_FIELD(name)
)
int main() {
MinJSON json;
MinJSON_register_User(json);
User user{42, "Bob"};
auto value = json.to_json(user);
std::cout << json.stringify(value, true) << "\n";
auto user2 = json.from_json(value);
std::cout << user2.name << "\n";
}
```
## π§ Π‘Π±ΠΎΡΠΊΠ° ΡΠ΅ΡΠ΅Π· CMake
```bash
mkdir build && cd build
cmake ..
make
```
## π ΠΠΈΡΠ΅Π½Π·ΠΈΡ
MIT License. Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π»ΡΠ±ΡΡ
ΡΠ΅Π»ΡΡ
.