mirror of
https://github.com/nlohmann/json.git
synced 2026-10-25 15:28:54 +00:00
* docs: cross-reference json_view and json_document for 3.13.0 Document the new zero-copy document/view API across the docs: add a "Documents and views" section to the basic_json API hub linking to all specializations, point parsing/conversion/modifying pages to the view-based alternatives, add document/view sections to feature pages, update the landing page to mention json_view.hpp/json_literals.hpp, and cross-link debugging/exceptions. Also document wide-string inputs (and ill-formed UTF-16/32 rejection), add parse/accept examples for wide strings, fix related doc gaps, and align features/parsing and FAQ with the added support. Signed-off-by: Niels Lohmann <mail@nlohmann.me> * docs: fix article before std::istream in FAQ Signed-off-by: Niels Lohmann <mail@nlohmann.me> * docs: clarify document inputs, decoding, get<T>() and editing Address review comments: say which inputs are borrowed and that a wide string pointer is an extra input, which values are decoded during parsing, that get<T>() reads only built-in types directly, all forms of set() and that the document's insert() is array-only, and how to store wide strings. Signed-off-by: Niels Lohmann <mail@nlohmann.me> * docs: integers are converted while parsing a document Also say "They accept every input" in basic_json_document::parse. Signed-off-by: Niels Lohmann <mail@nlohmann.me> --------- Signed-off-by: Niels Lohmann <mail@nlohmann.me>
28 lines
936 B
C++
28 lines
936 B
C++
#include <iostream>
|
|
#include <string>
|
|
#include <nlohmann/json.hpp>
|
|
|
|
using json = nlohmann::json;
|
|
|
|
int main()
|
|
{
|
|
// the same JSON text, given in different encodings
|
|
const std::string utf8 = "{\"name\":\"\u00e9\"}";
|
|
const std::u16string utf16 = u"{\"name\":\"\u00e9\"}";
|
|
const std::u32string utf32 = U"{\"name\":\"\u00e9\"}";
|
|
const std::wstring wide = L"{\"name\":\"\u00e9\"}";
|
|
|
|
// the encoding is deduced from the character type of the input, and all
|
|
// of them yield the same value
|
|
std::cout << json::parse(utf8) << '\n'
|
|
<< json::parse(utf16) << '\n'
|
|
<< json::parse(utf32) << '\n'
|
|
<< json::parse(wide) << '\n';
|
|
|
|
// a wide string literal works as well: u"..." is UTF-16, U"..." is UTF-32
|
|
std::cout << json::parse(u"[1, 2, 3]") << '\n';
|
|
|
|
// iterators over wide characters work as well
|
|
std::cout << json::parse(utf16.begin(), utf16.end()) << '\n';
|
|
}
|