Files
GdCpp12/staticOnly/json/jsonVCWrapper.cpp

90 lines
1.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "pch.h"
#include "json/jsonVCWrapper.h"
bool toWstring(const jsonobj& j, std::wstring& dst)
{
if (j.is_string()) { // 判断是否为string类型的数据避免get函数抛出异常
dst = utf8_16(j.get<std::string>());
return true;
}
else {
return false;
}
}
#ifdef _UNICODE
void to_json(jsonobj& j, const CString& p) {
j = CStringToUtf8(p);
}
void from_json(const jsonobj& j, CString& p) {
if (j.is_string()) { // 判断是否为string类型的数据避免get函数抛出异常
p = CStringFromUtf8(j.get<std::string>());
}
else {
// 没法返回错误
}
}
#else // 未测试
void to_json(jsonobj& j, const CString& p) {
j = Utf8ToGbk((LPCSTR)p);
}
void from_json(const jsonobj& j, CString& p) {
if (j.is_string()) { // 判断是否为string类型的数据避免get函数抛出异常
p = Utf8ToGbk(j.get<std::string>()).c_str();
}
else {
// 没法返回错误
}
}
#endif
void to_json(jsonobj& j, const CPoint& p)
{
j["x"] = p.x;
j["y"] = p.y;
}
void from_json(const jsonobj& j, CPoint& p)
{
readWithDefault(j, "x", p.x, 0);
readWithDefault(j, "y", p.y, 0);
}
void to_json(jsonobj& j, const CSize& p)
{
j["cx"] = p.cx;
j["cy"] = p.cy;
}
void from_json(const jsonobj& j, CSize& p)
{
readWithDefault(j, "cx", p.cx, 0);
readWithDefault(j, "cy", p.cy, 0);
}
void to_json(jsonobj& j, const CRect& p)
{
j["x"] = p.left;
j["y"] = p.top;
j["w"] = p.right-p.left;
j["h"] = p.bottom-p.top;
}
void from_json(const jsonobj& j, CRect& p)
{
int w, h;
readWithDefault(j, "x", p.left, 0);
readWithDefault(j, "y", p.top, 0);
readWithDefault(j, "w", w, 0);
readWithDefault(j, "h", h, 0);
p.right = p.left + w;
p.bottom = p.top + h;
}