From 549df3df588d8e6bd9852fe96dec9e4583a6d459 Mon Sep 17 00:00:00 2001 From: Nomango <569629550@qq.com> Date: Mon, 1 Apr 2019 22:02:46 +0800 Subject: [PATCH] add Json::array & Json::object function --- Easy2D/common/Json.h | 28 +++++++++++++++++++++++++++- samples/Samples/Demo5.h | 16 +++++++--------- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/Easy2D/common/Json.h b/Easy2D/common/Json.h index 385f44f3..fa77bd20 100644 --- a/Easy2D/common/Json.h +++ b/Easy2D/common/Json.h @@ -1907,7 +1907,7 @@ namespace easy2d { } - basic_json(initializer_list init_list) + basic_json(initializer_list const& init_list) { bool is_an_object = std::all_of(init_list.begin(), init_list.end(), [](const basic_json& json) { @@ -1934,6 +1934,32 @@ namespace easy2d } } + static inline basic_json object(initializer_list const& init_list) + { + if (init_list.size() != 2 || !(*init_list.begin()).is_string()) + { + throw json_type_error("cannot create object from initializer_list"); + } + + basic_json json; + json.value_ = JsonType::Object; + json.value_.data.object->emplace(*((*init_list.begin()).value_.data.string), *(init_list.begin() + 1)); + return json; + } + + static inline basic_json array(initializer_list const& init_list) + { + basic_json json; + json.value_ = JsonType::Array; + + if (init_list.size()) + { + json.value_.data.vector->reserve(init_list.size()); + json.value_.data.vector->assign(init_list.begin(), init_list.end()); + } + return json; + } + inline bool is_object() const { return value_.type == JsonType::Object; } inline bool is_array() const { return value_.type == JsonType::Array; } diff --git a/samples/Samples/Demo5.h b/samples/Samples/Demo5.h index e5cc03f8..732d986a 100644 --- a/samples/Samples/Demo5.h +++ b/samples/Samples/Demo5.h @@ -87,12 +87,12 @@ public: // 创建 JSON 格式的 POST 数据 Json request_data = { - {"string", "test中文"}, - {"boolean", true}, - {"integer", 12}, - {"float", 3.125}, - {"array", {1, 2, 3, 4, 4.5 }}, - {"object", {"key", "value"}}, + { "string", "test中文" }, + { "boolean", true }, + { "integer", 12 }, + { "float", 3.125 }, + { "array", { 1, 2, 3, 4, 4.5 } }, + { "object", { "key", "value" } }, }; HttpRequestPtr request = new HttpRequest; @@ -111,9 +111,7 @@ public: Logger::Instance().Println(L"Start to send PUT request..."); // 创建 JSON 格式的 PUT 数据 - Json request_data = { - {"user", {{"id", 1}, {"phone", "12345678"}}}, - }; + Json request_data = Json::array({ 1, 2, 3 }); HttpRequestPtr request = new HttpRequest; request->SetUrl(L"http://httpbin.org/put");