mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
ArduinoJson 7.0.1
This commit is contained in:
@@ -1,12 +0,0 @@
|
|||||||
# http://clang.llvm.org/docs/ClangFormatStyleOptions.html
|
|
||||||
|
|
||||||
BasedOnStyle: Google
|
|
||||||
Standard: c++11
|
|
||||||
AllowShortFunctionsOnASingleLine: Empty
|
|
||||||
IncludeBlocks: Preserve
|
|
||||||
IndentPPDirectives: AfterHash
|
|
||||||
DerivePointerAlignment: false
|
|
||||||
|
|
||||||
# Always break after if to get accurate coverage
|
|
||||||
AllowShortIfStatementsOnASingleLine: false
|
|
||||||
AllowShortLoopsOnASingleLine: false
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
*.md
|
|
||||||
@@ -1,6 +1,13 @@
|
|||||||
ArduinoJson: change log
|
ArduinoJson: change log
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
|
v7.0.1 (2024-01-10)
|
||||||
|
------
|
||||||
|
|
||||||
|
* Fix "no matching function" with `JsonObjectConst::operator[]` (issue #2019)
|
||||||
|
* Remove unused files in the PlatformIO package
|
||||||
|
* Fix `volatile bool` serialized as `1` or `0` instead of `true` or `false` (issue #2029)
|
||||||
|
|
||||||
v7.0.0 (2024-01-03)
|
v7.0.0 (2024-01-03)
|
||||||
------
|
------
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
# Contribution to ArduinoJson
|
|
||||||
|
|
||||||
First, thank you for taking the time to contribute to this project.
|
|
||||||
|
|
||||||
You can submit changes via GitHub Pull Requests.
|
|
||||||
|
|
||||||
Please:
|
|
||||||
|
|
||||||
1. Update the test suite for any change of behavior
|
|
||||||
2. Use clang-format in "file" mode to format the code
|
|
||||||
@@ -1,155 +0,0 @@
|
|||||||
<p align="center">
|
|
||||||
<a href="https://arduinojson.org/"><img alt="ArduinoJson" src="https://arduinojson.org/images/logo.svg" width="200" /></a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
[](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A7.x)
|
|
||||||
[](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/7.x)
|
|
||||||
[](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson)
|
|
||||||
[](https://coveralls.io/github/bblanchon/ArduinoJson?branch=7.x)
|
|
||||||
[](https://github.com/bblanchon/ArduinoJson/stargazers)
|
|
||||||
[](https://github.com/sponsors/bblanchon)
|
|
||||||
|
|
||||||
ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things).
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
* [JSON deserialization](https://arduinojson.org/v7/api/json/deserializejson/)
|
|
||||||
* [Optionally decodes UTF-16 escape sequences to UTF-8](https://arduinojson.org/v7/api/config/decode_unicode/)
|
|
||||||
* [Optionally supports comments in the input](https://arduinojson.org/v7/api/config/enable_comments/)
|
|
||||||
* [Optionally filters the input to keep only desired values](https://arduinojson.org/v7/api/json/deserializejson/#filtering)
|
|
||||||
* Supports single quotes as a string delimiter
|
|
||||||
* Compatible with [NDJSON](http://ndjson.org/) and [JSON Lines](https://jsonlines.org/)
|
|
||||||
* [JSON serialization](https://arduinojson.org/v7/api/json/serializejson/)
|
|
||||||
* [Can write to a buffer or a stream](https://arduinojson.org/v7/api/json/serializejson/)
|
|
||||||
* [Optionally indents the document (prettified JSON)](https://arduinojson.org/v7/api/json/serializejsonpretty/)
|
|
||||||
* [MessagePack serialization](https://arduinojson.org/v7/api/msgpack/serializemsgpack/)
|
|
||||||
* [MessagePack deserialization](https://arduinojson.org/v7/api/msgpack/deserializemsgpack/)
|
|
||||||
* Efficient
|
|
||||||
* [Twice smaller than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/)
|
|
||||||
* [Almost 10% faster than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/)
|
|
||||||
* [Consumes roughly 10% less RAM than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/)
|
|
||||||
* [Deduplicates strings](https://arduinojson.org/news/2020/08/01/version-6-16-0/)
|
|
||||||
* Versatile
|
|
||||||
* Supports [custom allocators (to use external RAM chip, for example)](https://arduinojson.org/v7/how-to/use-external-ram-on-esp32/)
|
|
||||||
* Supports [`String`](https://arduinojson.org/v7/api/config/enable_arduino_string/), [`std::string`](https://arduinojson.org/v7/api/config/enable_std_string/), and [`std::string_view`](https://arduinojson.org/v7/api/config/enable_string_view/)
|
|
||||||
* Supports [`Stream`](https://arduinojson.org/v7/api/config/enable_arduino_stream/) and [`std::istream`/`std::ostream`](https://arduinojson.org/v7/api/config/enable_std_stream/)
|
|
||||||
* Supports [Flash strings](https://arduinojson.org/v7/api/config/enable_progmem/)
|
|
||||||
* Supports [custom readers](https://arduinojson.org/v7/api/json/deserializejson/#custom-reader) and [custom writers](https://arduinojson.org/v7/api/json/serializejson/#custom-writer)
|
|
||||||
* Supports [custom converters](https://arduinojson.org/news/2021/05/04/version-6-18-0/)
|
|
||||||
* Portable
|
|
||||||
* Usable on any C++ project (not limited to Arduino)
|
|
||||||
* Compatible with C++11, C++14 and C++17
|
|
||||||
* Support for C++98/C++03 available on [ArduinoJson 6.20.x](https://github.com/bblanchon/ArduinoJson/tree/6.20.x)
|
|
||||||
* Zero warnings with `-Wall -Wextra -pedantic` and `/W4`
|
|
||||||
* [Header-only library](https://en.wikipedia.org/wiki/Header-only)
|
|
||||||
* Works with virtually any board
|
|
||||||
* Arduino boards: [Uno](https://amzn.to/38aL2ik), [Due](https://amzn.to/36YkWi2), [Micro](https://amzn.to/35WkdwG), [Nano](https://amzn.to/2QTvwRX), [Mega](https://amzn.to/36XWhuf), [Yun](https://amzn.to/30odURc), [Leonardo](https://amzn.to/36XWjlR)...
|
|
||||||
* Espressif chips: [ESP8266](https://amzn.to/36YluV8), [ESP32](https://amzn.to/2G4pRCB)
|
|
||||||
* Lolin (WeMos) boards: [D1 mini](https://amzn.to/2QUpz7q), [D1 Mini Pro](https://amzn.to/36UsGSs)...
|
|
||||||
* Teensy boards: [4.0](https://amzn.to/30ljXGq), [3.2](https://amzn.to/2FT0EuC), [2.0](https://amzn.to/2QXUMXj)
|
|
||||||
* Particle boards: [Argon](https://amzn.to/2FQHa9X), [Boron](https://amzn.to/36WgLUd), [Electron](https://amzn.to/30vEc4k), [Photon](https://amzn.to/387F9Cd)...
|
|
||||||
* Texas Instruments boards: [MSP430](https://amzn.to/30nJWgg)...
|
|
||||||
* Soft cores: [Nios II](https://en.wikipedia.org/wiki/Nios_II)...
|
|
||||||
* Tested on all major development environments
|
|
||||||
* [Arduino IDE](https://www.arduino.cc/en/Main/Software)
|
|
||||||
* [Atmel Studio](http://www.atmel.com/microsite/atmel-studio/)
|
|
||||||
* [Atollic TrueSTUDIO](https://atollic.com/truestudio/)
|
|
||||||
* [Energia](http://energia.nu/)
|
|
||||||
* [IAR Embedded Workbench](https://www.iar.com/iar-embedded-workbench/)
|
|
||||||
* [Keil uVision](http://www.keil.com/)
|
|
||||||
* [MPLAB X IDE](http://www.microchip.com/mplab/mplab-x-ide)
|
|
||||||
* [Particle](https://www.particle.io/)
|
|
||||||
* [PlatformIO](http://platformio.org/)
|
|
||||||
* [Sloeber plugin for Eclipse](https://eclipse.baeyens.it/)
|
|
||||||
* [Visual Micro](http://www.visualmicro.com/)
|
|
||||||
* [Visual Studio](https://www.visualstudio.com/)
|
|
||||||
* [Even works with online compilers like wandbox.org](https://wandbox.org/permlink/RlZSKy17DjJ6HcdN)
|
|
||||||
* [CMake friendly](https://arduinojson.org/v7/how-to/use-arduinojson-with-cmake/)
|
|
||||||
* Well designed
|
|
||||||
* [Elegant API](http://arduinojson.org/v7/example/)
|
|
||||||
* [Thread-safe](https://en.wikipedia.org/wiki/Thread_safety)
|
|
||||||
* Self-contained (no external dependency)
|
|
||||||
* `const` friendly
|
|
||||||
* [`for` friendly](https://arduinojson.org/v7/api/jsonobject/begin_end/)
|
|
||||||
* [TMP friendly](https://en.wikipedia.org/wiki/Template_metaprogramming)
|
|
||||||
* Handles [integer overflows](https://arduinojson.org/v7/api/jsonvariant/as/#integer-overflows)
|
|
||||||
* Well tested
|
|
||||||
* [Unit test coverage close to 100%](https://coveralls.io/github/bblanchon/ArduinoJson?branch=7.x)
|
|
||||||
* Continuously tested on
|
|
||||||
* [Visual Studio 2017, 2019, 2022](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/7.x)
|
|
||||||
* [GCC 5, 6, 7, 8, 9, 10, 11, 12](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22)
|
|
||||||
* [Clang 3.9, 4.0, 5.0, 6.0, 7, 8, 9, 10, 11, 12, 13, 14, 15](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22)
|
|
||||||
* [Continuously fuzzed with Google OSS Fuzz](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson)
|
|
||||||
* Passes all default checks of [clang-tidy](https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/clang-tidy/)
|
|
||||||
* Well documented
|
|
||||||
* [Tutorials](https://arduinojson.org/v7/doc/deserialization/)
|
|
||||||
* [Examples](https://arduinojson.org/v7/example/)
|
|
||||||
* [How-tos](https://arduinojson.org/v7/example/)
|
|
||||||
* [FAQ](https://arduinojson.org/v7/faq/)
|
|
||||||
* [Troubleshooter](https://arduinojson.org/v7/troubleshooter/)
|
|
||||||
* [Book](https://arduinojson.org/book/)
|
|
||||||
* [Changelog](CHANGELOG.md)
|
|
||||||
* Vibrant user community
|
|
||||||
* Most popular of all Arduino libraries on [GitHub](https://github.com/search?o=desc&q=arduino+library&s=stars&type=Repositories)
|
|
||||||
* [Used in hundreds of projects](https://www.hackster.io/search?i=projects&q=arduinojson)
|
|
||||||
* [Responsive support](https://github.com/bblanchon/ArduinoJson/issues?q=is%3Aissue+is%3Aclosed)
|
|
||||||
|
|
||||||
## Quickstart
|
|
||||||
|
|
||||||
### Deserialization
|
|
||||||
|
|
||||||
Here is a program that parses a JSON document with ArduinoJson.
|
|
||||||
|
|
||||||
```c++
|
|
||||||
const char* json = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
|
|
||||||
|
|
||||||
JsonDocument doc;
|
|
||||||
deserializeJson(doc, json);
|
|
||||||
|
|
||||||
const char* sensor = doc["sensor"];
|
|
||||||
long time = doc["time"];
|
|
||||||
double latitude = doc["data"][0];
|
|
||||||
double longitude = doc["data"][1];
|
|
||||||
```
|
|
||||||
|
|
||||||
See the [tutorial on arduinojson.org](https://arduinojson.org/v7/doc/deserialization/)
|
|
||||||
|
|
||||||
### Serialization
|
|
||||||
|
|
||||||
Here is a program that generates a JSON document with ArduinoJson:
|
|
||||||
|
|
||||||
```c++
|
|
||||||
JsonDocument doc;
|
|
||||||
|
|
||||||
doc["sensor"] = "gps";
|
|
||||||
doc["time"] = 1351824120;
|
|
||||||
doc["data"][0] = 48.756080;
|
|
||||||
doc["data"][1] = 2.302038;
|
|
||||||
|
|
||||||
serializeJson(doc, Serial);
|
|
||||||
// This prints:
|
|
||||||
// {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}
|
|
||||||
```
|
|
||||||
|
|
||||||
See the [tutorial on arduinojson.org](https://arduinojson.org/v7/doc/serialization/)
|
|
||||||
|
|
||||||
## Sponsors
|
|
||||||
|
|
||||||
ArduinoJson is thankful to its sponsors. Please give them a visit; they deserve it!
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<a href="https://www.programmingelectronics.com/" rel="sponsored">
|
|
||||||
<img src="https://arduinojson.org/images/2021/10/programmingeleactronicsacademy.png" alt="Programming Electronics Academy" width="200">
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<a href="https://github.com/1technophile" rel="sponsored">
|
|
||||||
<img alt="1technophile" src="https://avatars.githubusercontent.com/u/12672732?s=40&v=4">
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
If you run a commercial project that embeds ArduinoJson, think about [sponsoring the library's development](https://github.com/sponsors/bblanchon): it ensures the code that your products rely on stays actively maintained. It can also give your project some exposure to the makers' community.
|
|
||||||
|
|
||||||
If you are an individual user and want to support the development (or give a sign of appreciation), consider purchasing the book [Mastering ArduinoJson](https://arduinojson.org/book/) ❤, or simply [cast a star](https://github.com/bblanchon/ArduinoJson/stargazers) ⭐.
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
# ArduinoJson Support
|
|
||||||
|
|
||||||
First off, thank you very much for using ArduinoJson.
|
|
||||||
|
|
||||||
We'll be very happy to help you, but first please read the following.
|
|
||||||
|
|
||||||
## Before asking for help
|
|
||||||
|
|
||||||
1. Read the [FAQ](https://arduinojson.org/faq/?utm_source=github&utm_medium=support)
|
|
||||||
2. Search in the [API Reference](https://arduinojson.org/api/?utm_source=github&utm_medium=support)
|
|
||||||
|
|
||||||
If you did not find the answer, please create a [new issue on GitHub](https://github.com/bblanchon/ArduinoJson/issues/new).
|
|
||||||
|
|
||||||
It is OK to add a comment to a currently opened issue, but please avoid adding comments to a closed issue.
|
|
||||||
|
|
||||||
## Before hitting the Submit button
|
|
||||||
|
|
||||||
Please provide all the relevant information:
|
|
||||||
|
|
||||||
* Good title
|
|
||||||
* Short description of the problem
|
|
||||||
* Target platform
|
|
||||||
* Compiler model and version
|
|
||||||
* [MVCE](https://stackoverflow.com/help/mcve)
|
|
||||||
* Compiler output
|
|
||||||
|
|
||||||
Good questions get fast answers!
|
|
||||||
@@ -51,7 +51,7 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
operator JsonVariantConst() const {
|
operator JsonVariantConst() const {
|
||||||
return JsonVariantConst(collectionToVariant(data_), resources_);
|
return JsonVariantConst(getData(), resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if the reference is unbound.
|
// Returns true if the reference is unbound.
|
||||||
@@ -69,7 +69,7 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
|
|||||||
// Returns the depth (nesting level) of the array.
|
// Returns the depth (nesting level) of the array.
|
||||||
// https://arduinojson.org/v7/api/jsonarrayconst/nesting/
|
// https://arduinojson.org/v7/api/jsonarrayconst/nesting/
|
||||||
FORCE_INLINE size_t nesting() const {
|
FORCE_INLINE size_t nesting() const {
|
||||||
return detail::VariantData::nesting(collectionToVariant(data_), resources_);
|
return detail::VariantData::nesting(getData(), resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the number of elements in the array.
|
// Returns the number of elements in the array.
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
|
|||||||
: data_(data), resources_(resources) {}
|
: data_(data), resources_(resources) {}
|
||||||
|
|
||||||
operator JsonVariantConst() const {
|
operator JsonVariantConst() const {
|
||||||
return JsonVariantConst(collectionToVariant(data_), resources_);
|
return JsonVariantConst(getData(), resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if the reference is unbound.
|
// Returns true if the reference is unbound.
|
||||||
@@ -45,7 +45,7 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
|
|||||||
// Returns the depth (nesting level) of the object.
|
// Returns the depth (nesting level) of the object.
|
||||||
// https://arduinojson.org/v7/api/jsonobjectconst/nesting/
|
// https://arduinojson.org/v7/api/jsonobjectconst/nesting/
|
||||||
FORCE_INLINE size_t nesting() const {
|
FORCE_INLINE size_t nesting() const {
|
||||||
return detail::VariantData::nesting(collectionToVariant(data_), resources_);
|
return detail::VariantData::nesting(getData(), resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the number of members in the object.
|
// Returns the number of members in the object.
|
||||||
@@ -101,8 +101,9 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
|
|||||||
FORCE_INLINE typename detail::enable_if<detail::IsString<TChar*>::value,
|
FORCE_INLINE typename detail::enable_if<detail::IsString<TChar*>::value,
|
||||||
JsonVariantConst>::type
|
JsonVariantConst>::type
|
||||||
operator[](TChar* key) const {
|
operator[](TChar* key) const {
|
||||||
return JsonVariantConst(
|
return JsonVariantConst(detail::ObjectData::getMember(
|
||||||
detail::ObjectData::getMember(data_, detail::adaptString(key)));
|
data_, detail::adaptString(key), resources_),
|
||||||
|
resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// DEPRECATED: always returns zero
|
// DEPRECATED: always returns zero
|
||||||
|
|||||||
@@ -132,7 +132,8 @@ VariantRefBase<TDerived>::operator[](const TString& key) const {
|
|||||||
template <typename TDerived>
|
template <typename TDerived>
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline bool VariantRefBase<TDerived>::set(const T& value) const {
|
inline bool VariantRefBase<TDerived>::set(const T& value) const {
|
||||||
Converter<T>::toJson(value, getOrCreateVariant());
|
Converter<typename detail::remove_cv<T>::type>::toJson(value,
|
||||||
|
getOrCreateVariant());
|
||||||
auto resources = getResourceManager();
|
auto resources = getResourceManager();
|
||||||
return resources && !resources->overflowed();
|
return resources && !resources->overflowed();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define ARDUINOJSON_VERSION "7.0.0"
|
#define ARDUINOJSON_VERSION "7.0.1"
|
||||||
#define ARDUINOJSON_VERSION_MAJOR 7
|
#define ARDUINOJSON_VERSION_MAJOR 7
|
||||||
#define ARDUINOJSON_VERSION_MINOR 0
|
#define ARDUINOJSON_VERSION_MINOR 0
|
||||||
#define ARDUINOJSON_VERSION_REVISION 0
|
#define ARDUINOJSON_VERSION_REVISION 1
|
||||||
#define ARDUINOJSON_VERSION_MACRO V700
|
#define ARDUINOJSON_VERSION_MACRO V701
|
||||||
|
|||||||
Reference in New Issue
Block a user