Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ Note the difference between serialization and assignment:
json j_string = "this is a string";

// retrieve the string value
auto cpp_string = j_string.template get<std::string>();
auto cpp_string = j_string.get<std::string>();
// retrieve the string value (alternative when a variable already exists)
std::string cpp_string2;
j_string.get_to(cpp_string2);
Expand All @@ -354,7 +354,7 @@ j_string.get_to(cpp_string2);
std::string serialized_string = j_string.dump();

// output of original string
std::cout << cpp_string << " == " << cpp_string2 << " == " << j_string.template get<std::string>() << '\n';
std::cout << cpp_string << " == " << cpp_string2 << " == " << j_string.get<std::string>() << '\n';
// output of serialized value
std::cout << j_string << " == " << serialized_string << std::endl;
```
Expand Down Expand Up @@ -527,7 +527,7 @@ for (auto& element : j) {
}

// getter/setter
const auto tmp = j[0].template get<std::string>();
const auto tmp = j[0].get<std::string>();
j[1] = 42;
bool foo = j.at(2);

Expand Down Expand Up @@ -734,7 +734,7 @@ You can switch off implicit conversions by defining `JSON_USE_IMPLICIT_CONVERSIO
// strings
std::string s1 = "Hello, world!";
json js = s1;
auto s2 = js.template get<std::string>();
auto s2 = js.get<std::string>();
// NOT RECOMMENDED
std::string s3 = js;
std::string s4;
Expand All @@ -743,7 +743,7 @@ s4 = js;
// Booleans
bool b1 = true;
json jb = b1;
auto b2 = jb.template get<bool>();
auto b2 = jb.get<bool>();
// NOT RECOMMENDED
bool b3 = jb;
bool b4;
Expand All @@ -752,7 +752,7 @@ b4 = jb;
// numbers
int i = 42;
json jn = i;
auto f = jn.template get<double>();
auto f = jn.get<double>();
// NOT RECOMMENDED
double f2 = jb;
double f3;
Expand Down Expand Up @@ -795,9 +795,9 @@ j["age"] = p.age;

// convert from JSON: copy each value from the JSON object
ns::person p {
j["name"].template get<std::string>(),
j["address"].template get<std::string>(),
j["age"].template get<int>()
j["name"].get<std::string>(),
    j["address"].get<std::string>(),
    j["age"].get<int>()
};
```

Expand All @@ -814,7 +814,7 @@ std::cout << j << std::endl;
// {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"}

// conversion: json -> person
auto p2 = j.template get<ns::person>();
auto p2 = j.get<ns::person>();

// that's it
assert(p == p2);
Expand Down Expand Up @@ -927,7 +927,7 @@ namespace nlohmann {
if (j.is_null()) {
opt = boost::none;
} else {
opt = j.template get<T>(); // same as above, but with
opt = j.get<T>(); // same as above, but with
// adl_serializer<T>::from_json
}
}
Expand Down Expand Up @@ -955,7 +955,7 @@ namespace nlohmann {
// note: the return type is no longer 'void', and the method only takes
// one argument
static move_only_type from_json(const json& j) {
return {j.template get<int>()};
return {j.get<int>()};
}

// Here's the catch! You must provide a to_json method! Otherwise, you
Expand Down Expand Up @@ -1059,11 +1059,11 @@ assert(j == "stopped");

// json string to enum
json j3 = "running";
assert(j3.template get<TaskState>() == TS_RUNNING);
assert(j3.get<TaskState>() == TS_RUNNING);

// undefined json value to enum (where the first map entry above is the default)
json jPi = 3.14;
assert(jPi.template get<TaskState>() == TS_INVALID);
assert(jPi.get<TaskState>() == TS_INVALID);
```

Just as in [Arbitrary Type Conversions](#arbitrary-types-conversions) above,
Expand Down
10 changes: 5 additions & 5 deletions docs/mkdocs/docs/api/macros/json_disable_enum_serialization.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ The default value is `0`.
const json j = Choice::first;

// normally invokes from_json parse function but with JSON_DISABLE_ENUM_SERIALIZATION defined, it does not
Choice ch = j.template get<Choice>();
Choice ch = j.get<Choice>();
}
```

Expand Down Expand Up @@ -86,7 +86,7 @@ The default value is `0`.
const json j = Choice::first;

// uses user-defined from_json function defined by macro
Choice ch = j.template get<Choice>();
Choice ch = j.get<Choice>();
}
```

Expand All @@ -109,7 +109,7 @@ The default value is `0`.

void from_json(const json& j, Choice& ch)
{
auto value = j.template get<std::string>();
auto value = j.get<std::string>();
if (value == "first")
{
ch = Choice::first;
Expand All @@ -122,7 +122,7 @@ The default value is `0`.

void to_json(json& j, const Choice& ch)
{
auto value = j.template get<std::string>();
auto value = j.get<std::string>();
if (value == "first")
{
ch = Choice::first;
Expand All @@ -139,7 +139,7 @@ The default value is `0`.
const json j = Choice::first;

// uses user-defined from_json function
Choice ch = j.template get<Choice>();
auto value = j.get<std::string>();
}
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ By default, implicit conversions are enabled.

```cpp
json j = "Hello, world!";
auto s = j.template get<std::string>();
auto s = j.get<std::string>();
```

## See also
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ int main()
j["address"] = "744 Evergreen Terrace";
j["age"] = 60;

auto p = j.template get<ns::person>();
auto p = j.get<ns::person>();

std::cout << p.name << " (" << p.age << ") lives in " << p.address << std::endl;
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ int main()
j["address"] = "744 Evergreen Terrace";
j["age"] = 60;

auto p = j.template get<ns::person>();
auto p = j.get<ns::person>();

std::cout << p.name << " (" << p.age << ") lives in " << p.address << std::endl;
}
10 changes: 5 additions & 5 deletions docs/mkdocs/docs/examples/get__PointerType.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ int main()
json value = 17;

// explicitly getting pointers
auto p1 = value.template get<const json::number_integer_t*>();
auto p2 = value.template get<json::number_integer_t*>();
auto p3 = value.template get<json::number_integer_t* const>();
auto p4 = value.template get<const json::number_integer_t* const>();
auto p5 = value.template get<json::number_float_t*>();
auto p1 = value.get<const json::number_integer_t*>();
auto p2 = value.get<json::number_integer_t*>();
auto p3 = value.get<json::number_integer_t* const>();
auto p4 = value.get<const json::number_integer_t* const>();
auto p5 = value.get<json::number_float_t*>();

// print the pointees
std::cout << *p1 << ' ' << *p2 << ' ' << *p3 << ' ' << *p4 << '\n';
Expand Down
16 changes: 8 additions & 8 deletions docs/mkdocs/docs/examples/get__ValueType_const.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@ int main()
};

// use explicit conversions
auto v1 = json_types["boolean"].template get<bool>();
auto v2 = json_types["number"]["integer"].template get<int>();
auto v3 = json_types["number"]["integer"].template get<short>();
auto v4 = json_types["number"]["floating-point"].template get<float>();
auto v5 = json_types["number"]["floating-point"].template get<int>();
auto v6 = json_types["string"].template get<std::string>();
auto v7 = json_types["array"].template get<std::vector<short>>();
auto v8 = json_types.template get<std::unordered_map<std::string, json>>();
auto v1 = json_types["boolean"].get<bool>();
auto v2 = json_types["number"]["integer"].get<int>();
auto v3 = json_types["number"]["integer"].get<short>();
auto v4 = json_types["number"]["floating-point"].get<float>();
auto v5 = json_types["number"]["floating-point"].get<int>();
auto v6 = json_types["string"].get<std::string>();
auto v7 = json_types["array"].get<std::vector<short>>();
auto v8 = json_types.get<std::unordered_map<std::string, json>>();

// print the conversion results
std::cout << v1 << '\n';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ int main()

// deserialization: json -> person
json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json;
auto p2 = j2.template get<ns::person>();
auto p2 = j2.get<ns::person>();

// incomplete deserialization:
json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json;
auto p3 = j3.template get<ns::person>();
auto p3 = j3.get<ns::person>();
std::cout << "roundtrip: " << json(p3) << std::endl;
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ int main()

// deserialization: json -> person
json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json;
auto p2 = j2.template get<ns::person>();
auto p2 = j2.get<ns::person>();

// incomplete deserialization:
json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json;
auto p3 = j3.template get<ns::person>();
auto p3 = j3.get<ns::person>();
std::cout << "roundtrip: " << json(p3) << std::endl;
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,13 @@ int main()

// deserialization: json -> person
json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json;
auto p2 = j2.template get<ns::person>();
auto p2 = j2.get<ns::person>();

// incomplete deserialization:
json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json;
try
{
auto p3 = j3.template get<ns::person>();
auto p3 = j3.get<ns::person>();
}
catch (const json::exception& e)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ int main()

// deserialization: json -> person
json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json;
auto p2 = j2.template get<ns::person>();
auto p2 = j2.get<ns::person>();

// incomplete deserialization:
json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json;
try
{
auto p3 = j3.template get<ns::person>();
auto p3 = j3.get<ns::person>();
}
catch (const json::exception& e)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@ int main()

// deserialization: json -> person
json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json;
auto p2 = j2.template get<ns::person>();
auto p2 = j2.get<ns::person>();

// incomplete deserialization:
json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json;
auto p3 = j3.template get<ns::person>();
auto p3 = j3.get<ns::person>();
std::cout << "roundtrip: " << json(p3) << std::endl;
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ int main()

// deserialization: json -> person
json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json;
auto p2 = j2.template get<ns::person>();
auto p2 = j2.get<ns::person>();

// incomplete deserialization:
json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json;
auto p3 = j3.template get<ns::person>();
auto p3 = j3.get<ns::person>();
std::cout << "roundtrip: " << json(p3) << std::endl;
}
8 changes: 4 additions & 4 deletions docs/mkdocs/docs/examples/nlohmann_json_serialize_enum.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,16 @@ int main()
// deserialization
json j_running = "running";
json j_blue = "blue";
auto running = j_running.template get<ns::TaskState>();
auto blue = j_blue.template get<ns::Color>();
auto running = j_running.get<ns::TaskState>();
auto blue = j_blue.get<ns::Color>();
std::cout << j_running << " -> " << running
<< ", " << j_blue << " -> " << static_cast<int>(blue) << std::endl;

// deserializing undefined JSON value to enum
// (where the first map entry above is the default)
json j_pi = 3.14;
auto invalid = j_pi.template get<ns::TaskState>();
auto unknown = j_pi.template get<ns::Color>();
auto invalid = j_pi.get<ns::TaskState>();
auto unknown = j_pi.get<ns::Color>();
std::cout << j_pi << " -> " << invalid << ", "
<< j_pi << " -> " << static_cast<int>(unknown) << std::endl;
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ int main()

// deserialization
json j_rot = "rot";
auto rot = j_rot.template get<ns::Color>();
auto red = j_red.template get<ns::Color>();
auto rot = j_rot.get<ns::Color>();
auto red = j_red.get<ns::Color>();
std::cout << j_rot << " -> " << static_cast<int>(rot) << std::endl;
std::cout << j_red << " -> " << static_cast<int>(red) << std::endl;
}
12 changes: 6 additions & 6 deletions docs/mkdocs/docs/features/arbitrary_types.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ j["age"] = p.age;

// convert from JSON: copy each value from the JSON object
ns::person p {
j["name"].template get<std::string>(),
j["address"].template get<std::string>(),
j["age"].template get<int>()
j["name"].get<std::string>(),
j["address"].get<std::string>(),
j["age"].get<int>()
};
```

Expand All @@ -43,7 +43,7 @@ std::cout << j << std::endl;
// {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"}

// conversion: json -> person
auto p2 = j.template get<ns::person>();
auto p2 = j.get<ns::person>();

// that's it
assert(p == p2);
Expand Down Expand Up @@ -191,7 +191,7 @@ struct adl_serializer<boost::optional<T>> {
if (j.is_null()) {
opt = boost::none;
} else {
opt = j.template get<T>(); // same as above, but with
opt = j.get<T>(); // same as above, but with
// adl_serializer<T>::from_json
}
}
Expand Down Expand Up @@ -224,7 +224,7 @@ namespace nlohmann {
// note: the return type is no longer 'void', and the method only takes
// one argument
static move_only_type from_json(const json& j) {
return {j.template get<int>()};
return {j.get<int>()};
}

// Here's the catch! You must provide a to_json method! Otherwise, you
Expand Down
4 changes: 2 additions & 2 deletions docs/mkdocs/docs/features/enum_conversion.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ assert(j == "stopped");

// json string to enum
json j3 = "running";
assert(j3.template get<TaskState>() == TS_RUNNING);
assert(j3.get<TaskState>() == TS_RUNNING);

// undefined json value to enum (where the first map entry above is the default)
json jPi = 3.14;
assert(jPi.template get<TaskState>() == TS_INVALID );
assert(jPi.get<TaskState>() == TS_INVALID );
```

## Notes
Expand Down
Loading