cpp
复制代码
#ifndef FORMAT_H
#define FORMAT_H
#include <string>
namespace FormatJson {
static const char *kJsonArrayEmpty = "[]";
static const char *kJsonObjectEmpty = "{}";
} // namespace FormatJson
class Format
{
public:
static void outputJsonValue(std::string &json, const std::string &key, const std::string &value, bool isEnd);
static void outputJsonObject(std::string &jsonObj, const std::string &key, const std::string &value, bool isEnd);
static void outputJsonValueToArray(std::string &jsonArray, const std::string &jsonValue, bool isEnd);
static void outputJsonObjectToArray(std::string &jsonArray, const std::string &jsonValue, bool isEnd);
};
#endif // FORMAT_H
cpp
复制代码
#include "format.h"
void Format::outputJsonValue(std::string &jsonObj, const std::string &key, const std::string &value, bool isEnd)
{
if (jsonObj.empty())
jsonObj.append("{");
else
jsonObj.append(", ");
jsonObj.append("\"");
jsonObj.append(key);
jsonObj.append("\"");
jsonObj.append(":");
jsonObj.append("\"");
jsonObj.append(value);
jsonObj.append("\"");
if (isEnd)
jsonObj.append("}");
}
void Format::outputJsonObject(std::string &jsonObj, const std::string &key, const std::string &value, bool isEnd)
{
if (jsonObj.empty())
jsonObj.append("{");
else
jsonObj.append(", ");
jsonObj.append("\"");
jsonObj.append(key);
jsonObj.append("\"");
jsonObj.append(":");
jsonObj.append(value);
if (isEnd)
jsonObj.append("}");
}
void Format::outputJsonValueToArray(std::string &jsonArray, const std::string &jsonValue, bool isEnd)
{
if (jsonArray.empty())
jsonArray.append("[");
else
jsonArray.append(", ");
jsonArray.append("\"");
jsonArray.append(jsonValue);
jsonArray.append("\"");
if (isEnd)
jsonArray.append("]");
}
void Format::outputJsonObjectToArray(std::string &jsonArray, const std::string &jsonValue, bool isEnd)
{
if (jsonArray.empty())
jsonArray.append("[");
else
jsonArray.append(", ");
jsonArray.append(jsonValue);
if (isEnd)
jsonArray.append("]");
}
test.cpp
cpp
复制代码
#include "format.h"
void test()
{
// 根对象
std::string root;
Format::outputJsonValue(root, "numbers", "123", false);
// 对象 + 数组
std::vector<std::string> fruits{"apple", "banana", "orange", "mango"};
std::string jsonArray;
for (const auto &fruit : fruits)
Format::outputJsonValueToArray(jsonArray, fruit, false);
if (!jsonArray.empty())
jsonArray.append("]");
if (jsonArray.empty())
jsonArray = FormatJson::kJsonArrayEmpty;
Format::outputJsonObject(root, "fruits", jsonArray, false);
// 数组 + 对象
std::string jsonObjectArray;
std::string jsonObject;
Format::outputJsonValue(jsonObject, "key", "value", true);
Format::outputJsonObjectToArray(jsonObjectArray, jsonObject, false);
Format::outputJsonObjectToArray(jsonObjectArray, jsonObject, true);
Format::outputJsonObject(root, "objects", jsonObjectArray, false);
Format::outputJsonValue(root, "branchs", "123", true);
std::cout << root << std::endl;
}
输出
创作不易,小小的支持一下吧!