mirror of
https://github.com/nlohmann/json.git
synced 2024-08-23 05:22:28 +02:00
🔀 merge branch 'develop' into TurpentineDistillery-feature/locale_independent_str_to_num
This commit is contained in:
commit
926af6d50b
10
README.md
10
README.md
|
@ -4,6 +4,7 @@
|
|||
[![Build Status](https://ci.appveyor.com/api/projects/status/1acb366xfyg3qybk/branch/develop?svg=true)](https://ci.appveyor.com/project/nlohmann/json)
|
||||
[![Coverage Status](https://img.shields.io/coveralls/nlohmann/json.svg)](https://coveralls.io/r/nlohmann/json)
|
||||
[![Coverity Scan Build Status](https://scan.coverity.com/projects/5550/badge.svg)](https://scan.coverity.com/projects/nlohmann-json)
|
||||
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/f3732b3327e34358a0e9d1fe9f661f08)](https://www.codacy.com/app/nlohmann/json?utm_source=github.com&utm_medium=referral&utm_content=nlohmann/json&utm_campaign=Badge_Grade)
|
||||
[![Try online](https://img.shields.io/badge/try-online-blue.svg)](http://melpon.org/wandbox/permlink/4NEU6ZZMoM9lpIex)
|
||||
[![Documentation](https://img.shields.io/badge/docs-doxygen-blue.svg)](http://nlohmann.github.io/json)
|
||||
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nlohmann/json/master/LICENSE.MIT)
|
||||
|
@ -25,6 +26,7 @@
|
|||
- [Supported compilers](#supported-compilers)
|
||||
- [License](#license)
|
||||
- [Thanks](#thanks)
|
||||
- [Projects using JSON for Modern C++](#projects-using-json-for-modern-c)
|
||||
- [Notes](#notes)
|
||||
- [Execute unit tests](#execute-unit-tests)
|
||||
|
||||
|
@ -168,7 +170,7 @@ auto j2 = R"(
|
|||
)"_json;
|
||||
```
|
||||
|
||||
Note that without appending the `_json` suffix, the passed string literal is not parsed, but just used as JSON string value. That is, `json j = "{ \"happy\": true, \"pi\": 3.141 }"` would just store the string `"{ "happy": true, "pi": 3.141 }"` rather than parsing the acutal object.
|
||||
Note that without appending the `_json` suffix, the passed string literal is not parsed, but just used as JSON string value. That is, `json j = "{ \"happy\": true, \"pi\": 3.141 }"` would just store the string `"{ "happy": true, "pi": 3.141 }"` rather than parsing the actual object.
|
||||
|
||||
The above example can also be expressed explicitly using `json::parse()`:
|
||||
|
||||
|
@ -820,11 +822,17 @@ I deeply appreciate the help of the following people.
|
|||
- [EnricoBilla](https://github.com/EnricoBilla) noted a typo in an example.
|
||||
- [Martin Hořeňovský](https://github.com/horenmar) found a way for a 2x speedup for the compilation time of the test suite.
|
||||
- [ukhegg](https://github.com/ukhegg) found proposed an improvement for the examples section.
|
||||
- [rswanson-ihi](https://github.com/rswanson-ihi) noted a type in the README.
|
||||
|
||||
|
||||
Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone.
|
||||
|
||||
|
||||
## Projects using JSON for Modern C++
|
||||
|
||||
The library is currently used in Apple macOS Sierra and iOS 10. I am not sure what they are using the library for, but I am happy that it runs on so many devices.
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- The code contains numerous debug **assertions** which can be switched off by defining the preprocessor macro `NDEBUG`, see the [documentation of `assert`](http://en.cppreference.com/w/cpp/error/assert). In particular, note [`operator[]`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a2e26bd0b0168abb61f67ad5bcd5b9fa1.html#a2e26bd0b0168abb61f67ad5bcd5b9fa1) implements **unchecked access** for const objects: If the given key is not present, the behavior is undefined (think of a dereferenced null pointer) and yields an [assertion failure](https://github.com/nlohmann/json/issues/289) if assertions are switched on. If you are not sure whether an element in an object exists, use checked access with the [`at()` function](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a674de1ee73e6bf4843fc5dc1351fb726.html#a674de1ee73e6bf4843fc5dc1351fb726).
|
||||
|
|
BIN
doc/usages/ios.png
Executable file
BIN
doc/usages/ios.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 204 KiB |
BIN
doc/usages/macos.png
Normal file
BIN
doc/usages/macos.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 MiB |
30
src/json.hpp
30
src/json.hpp
|
@ -1106,7 +1106,7 @@ class basic_json
|
|||
/*!
|
||||
@brief returns version information on the library
|
||||
|
||||
This function returns a JSON object with infiormation about the library,
|
||||
This function returns a JSON object with information about the library,
|
||||
including the version number and information on the platform and compiler.
|
||||
|
||||
@return JSON object holding version information
|
||||
|
@ -3417,7 +3417,7 @@ class basic_json
|
|||
/*!
|
||||
@brief get a reference value (implicit)
|
||||
|
||||
Implict reference access to the internally stored JSON value. No copies
|
||||
Implicit reference access to the internally stored JSON value. No copies
|
||||
are made.
|
||||
|
||||
@warning Writing data to the referee of the result yields an undefined
|
||||
|
@ -3492,7 +3492,7 @@ class basic_json
|
|||
template < typename ValueType, typename std::enable_if <
|
||||
not std::is_pointer<ValueType>::value and
|
||||
not std::is_same<ValueType, typename string_t::value_type>::value
|
||||
#ifndef _MSC_VER // fix for issue #167 operator<< abiguity under VS2015
|
||||
#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015
|
||||
and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value
|
||||
#endif
|
||||
, int >::type = 0 >
|
||||
|
@ -4285,7 +4285,7 @@ class basic_json
|
|||
|
||||
@complexity The complexity depends on the type:
|
||||
- objects: amortized constant
|
||||
- arrays: linear in distance between pos and the end of the container
|
||||
- arrays: linear in distance between @a pos and the end of the container
|
||||
- strings: linear in the length of the string
|
||||
- other types: constant
|
||||
|
||||
|
@ -5537,7 +5537,7 @@ class basic_json
|
|||
@throw std::domain_error if @a pos is not an iterator of *this; example:
|
||||
`"iterator does not fit current value"`
|
||||
|
||||
@complexity Constant plus linear in the distance between pos and end of
|
||||
@complexity Constant plus linear in the distance between @a pos and end of
|
||||
the container.
|
||||
|
||||
@liveexample{The example shows how `insert()` is used.,insert}
|
||||
|
@ -6234,7 +6234,7 @@ class basic_json
|
|||
`std::setw(4)` on @a o sets the indentation level to `4` and the
|
||||
serialization result is the same as calling `dump(4)`.
|
||||
|
||||
@note During serializaion, the locale and the precision of the output
|
||||
@note During serialization, the locale and the precision of the output
|
||||
stream @a o are changed. The original values are restored when the
|
||||
function returns.
|
||||
|
||||
|
@ -10624,7 +10624,7 @@ basic_json_parser_66:
|
|||
if (m_stream == nullptr or m_stream->eof())
|
||||
{
|
||||
// m_start may or may not be pointing into m_line_buffer at
|
||||
// this point. We trust the standand library to do the right
|
||||
// this point. We trust the standard library to do the right
|
||||
// thing. See http://stackoverflow.com/q/28142011/266378
|
||||
m_line_buffer.assign(m_start, m_limit);
|
||||
|
||||
|
@ -10712,7 +10712,7 @@ basic_json_parser_66:
|
|||
m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This
|
||||
can be rephrased to m_cursor - m_start - 2 > x. With the
|
||||
precondition, we x <= 0, meaning that the loop condition holds
|
||||
indefinitly if i is always decreased. However, observe that the value
|
||||
indefinitely if i is always decreased. However, observe that the value
|
||||
of i is strictly increasing with each iteration, as it is incremented
|
||||
by 1 in the iteration expression and never decremented inside the loop
|
||||
body. Hence, the loop condition will eventually be false which
|
||||
|
@ -11645,7 +11645,7 @@ basic_json_parser_66:
|
|||
|
||||
if (reference_token == "-")
|
||||
{
|
||||
// explicityly treat "-" as index beyond the end
|
||||
// explicitly treat "-" as index beyond the end
|
||||
ptr = &ptr->operator[](ptr->m_value.array->size());
|
||||
}
|
||||
else
|
||||
|
@ -12152,7 +12152,7 @@ basic_json_parser_66:
|
|||
primitive. The original JSON value can be restored using the @ref
|
||||
unflatten() function.
|
||||
|
||||
@return an object that maps JSON pointers to primitve values
|
||||
@return an object that maps JSON pointers to primitive values
|
||||
|
||||
@note Empty objects and arrays are flattened to `null` and will not be
|
||||
reconstructed correctly by the @ref unflatten() function.
|
||||
|
@ -12219,7 +12219,7 @@ basic_json_parser_66:
|
|||
|
||||
[JSON Patch](http://jsonpatch.com) defines a JSON document structure for
|
||||
expressing a sequence of operations to apply to a JSON) document. With
|
||||
this funcion, a JSON Patch is applied to the current JSON value by
|
||||
this function, a JSON Patch is applied to the current JSON value by
|
||||
executing all operations from the patch.
|
||||
|
||||
@param[in] json_patch JSON patch document
|
||||
|
@ -12526,8 +12526,8 @@ basic_json_parser_66:
|
|||
@note Currently, only `remove`, `add`, and `replace` operations are
|
||||
generated.
|
||||
|
||||
@param[in] source JSON value to copare from
|
||||
@param[in] target JSON value to copare against
|
||||
@param[in] source JSON value to compare from
|
||||
@param[in] target JSON value to compare against
|
||||
@param[in] path helper value to create JSON pointers
|
||||
|
||||
@return a JSON patch to convert the @a source to @a target
|
||||
|
@ -12776,9 +12776,9 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std
|
|||
#endif
|
||||
|
||||
// clean up
|
||||
#undef JSON_THROW
|
||||
#undef JSON_TRY
|
||||
#undef JSON_CATCH
|
||||
#undef JSON_DEPRECATED
|
||||
#undef JSON_THROW
|
||||
#undef JSON_TRY
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1106,7 +1106,7 @@ class basic_json
|
|||
/*!
|
||||
@brief returns version information on the library
|
||||
|
||||
This function returns a JSON object with infiormation about the library,
|
||||
This function returns a JSON object with information about the library,
|
||||
including the version number and information on the platform and compiler.
|
||||
|
||||
@return JSON object holding version information
|
||||
|
@ -3417,7 +3417,7 @@ class basic_json
|
|||
/*!
|
||||
@brief get a reference value (implicit)
|
||||
|
||||
Implict reference access to the internally stored JSON value. No copies
|
||||
Implicit reference access to the internally stored JSON value. No copies
|
||||
are made.
|
||||
|
||||
@warning Writing data to the referee of the result yields an undefined
|
||||
|
@ -3492,7 +3492,7 @@ class basic_json
|
|||
template < typename ValueType, typename std::enable_if <
|
||||
not std::is_pointer<ValueType>::value and
|
||||
not std::is_same<ValueType, typename string_t::value_type>::value
|
||||
#ifndef _MSC_VER // fix for issue #167 operator<< abiguity under VS2015
|
||||
#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015
|
||||
and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value
|
||||
#endif
|
||||
, int >::type = 0 >
|
||||
|
@ -4285,7 +4285,7 @@ class basic_json
|
|||
|
||||
@complexity The complexity depends on the type:
|
||||
- objects: amortized constant
|
||||
- arrays: linear in distance between pos and the end of the container
|
||||
- arrays: linear in distance between @a pos and the end of the container
|
||||
- strings: linear in the length of the string
|
||||
- other types: constant
|
||||
|
||||
|
@ -5537,7 +5537,7 @@ class basic_json
|
|||
@throw std::domain_error if @a pos is not an iterator of *this; example:
|
||||
`"iterator does not fit current value"`
|
||||
|
||||
@complexity Constant plus linear in the distance between pos and end of
|
||||
@complexity Constant plus linear in the distance between @a pos and end of
|
||||
the container.
|
||||
|
||||
@liveexample{The example shows how `insert()` is used.,insert}
|
||||
|
@ -6234,7 +6234,7 @@ class basic_json
|
|||
`std::setw(4)` on @a o sets the indentation level to `4` and the
|
||||
serialization result is the same as calling `dump(4)`.
|
||||
|
||||
@note During serializaion, the locale and the precision of the output
|
||||
@note During serialization, the locale and the precision of the output
|
||||
stream @a o are changed. The original values are restored when the
|
||||
function returns.
|
||||
|
||||
|
@ -9774,7 +9774,7 @@ class basic_json
|
|||
if (m_stream == nullptr or m_stream->eof())
|
||||
{
|
||||
// m_start may or may not be pointing into m_line_buffer at
|
||||
// this point. We trust the standand library to do the right
|
||||
// this point. We trust the standard library to do the right
|
||||
// thing. See http://stackoverflow.com/q/28142011/266378
|
||||
m_line_buffer.assign(m_start, m_limit);
|
||||
|
||||
|
@ -9862,7 +9862,7 @@ class basic_json
|
|||
m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This
|
||||
can be rephrased to m_cursor - m_start - 2 > x. With the
|
||||
precondition, we x <= 0, meaning that the loop condition holds
|
||||
indefinitly if i is always decreased. However, observe that the value
|
||||
indefinitely if i is always decreased. However, observe that the value
|
||||
of i is strictly increasing with each iteration, as it is incremented
|
||||
by 1 in the iteration expression and never decremented inside the loop
|
||||
body. Hence, the loop condition will eventually be false which
|
||||
|
@ -10795,7 +10795,7 @@ class basic_json
|
|||
|
||||
if (reference_token == "-")
|
||||
{
|
||||
// explicityly treat "-" as index beyond the end
|
||||
// explicitly treat "-" as index beyond the end
|
||||
ptr = &ptr->operator[](ptr->m_value.array->size());
|
||||
}
|
||||
else
|
||||
|
@ -11302,7 +11302,7 @@ class basic_json
|
|||
primitive. The original JSON value can be restored using the @ref
|
||||
unflatten() function.
|
||||
|
||||
@return an object that maps JSON pointers to primitve values
|
||||
@return an object that maps JSON pointers to primitive values
|
||||
|
||||
@note Empty objects and arrays are flattened to `null` and will not be
|
||||
reconstructed correctly by the @ref unflatten() function.
|
||||
|
@ -11369,7 +11369,7 @@ class basic_json
|
|||
|
||||
[JSON Patch](http://jsonpatch.com) defines a JSON document structure for
|
||||
expressing a sequence of operations to apply to a JSON) document. With
|
||||
this funcion, a JSON Patch is applied to the current JSON value by
|
||||
this function, a JSON Patch is applied to the current JSON value by
|
||||
executing all operations from the patch.
|
||||
|
||||
@param[in] json_patch JSON patch document
|
||||
|
@ -11676,8 +11676,8 @@ class basic_json
|
|||
@note Currently, only `remove`, `add`, and `replace` operations are
|
||||
generated.
|
||||
|
||||
@param[in] source JSON value to copare from
|
||||
@param[in] target JSON value to copare against
|
||||
@param[in] source JSON value to compare from
|
||||
@param[in] target JSON value to compare against
|
||||
@param[in] path helper value to create JSON pointers
|
||||
|
||||
@return a JSON patch to convert the @a source to @a target
|
||||
|
@ -11926,9 +11926,9 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std
|
|||
#endif
|
||||
|
||||
// clean up
|
||||
#undef JSON_THROW
|
||||
#undef JSON_TRY
|
||||
#undef JSON_CATCH
|
||||
#undef JSON_DEPRECATED
|
||||
#undef JSON_THROW
|
||||
#undef JSON_TRY
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue