Merge pull request #508 from theodelrieu/feature/c_array_conversion

add to_json method for C arrays
This commit is contained in:
Niels Lohmann 2017-03-16 19:00:58 +01:00 committed by GitHub
commit 773b33e016
3 changed files with 511 additions and 1031 deletions

File diff suppressed because it is too large Load diff

View file

@ -798,6 +798,13 @@ void to_json(BasicJsonType& j, const CompatibleObjectType& arr)
external_constructor<value_t::object>::construct(j, arr);
}
template <typename BasicJsonType, typename T, std::size_t N,
enable_if_t<not std::is_constructible<
typename BasicJsonType::string_t, T (&)[N]>::value,
int> = 0>
void to_json(BasicJsonType &j, T (&arr)[N]) {
external_constructor<value_t::array>::construct(j, arr);
}
///////////////
// from_json //

View file

@ -190,6 +190,20 @@ TEST_CASE("value conversion")
#endif
}
SECTION("built-in arrays")
{
const char str[] = "a string";
const int nbs[] = {0, 1, 2};
json j2 = nbs;
json j3 = str;
auto v = j2.get<std::vector<int>>();
auto s = j3.get<std::string>();
CHECK(std::equal(v.begin(), v.end(), std::begin(nbs)));
CHECK(s == str);
}
SECTION("std::deque<json>")
{
std::deque<json> a = j.get<std::deque<json>>();