From 1fc27d239cb945899246a423b0fba9d28277d3ab Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 28 May 2024 21:09:00 +0300 Subject: libjson: new data to replace existing one --- libs/libjson/src/stdafx.cxx | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'libs/libjson/src') diff --git a/libs/libjson/src/stdafx.cxx b/libs/libjson/src/stdafx.cxx index 178e138057..e96fbffa1b 100644 --- a/libs/libjson/src/stdafx.cxx +++ b/libs/libjson/src/stdafx.cxx @@ -22,18 +22,30 @@ along with this program. If not, see . LIBJSON_DLL(JSONNode&) operator<<(JSONNode &json, const INT_PARAM ¶m) { + auto n = json.find(param.szName); + if (n != json.end()) + json.erase(n); + json.push_back(JSONNode(param.szName, param.iValue)); return json; } LIBJSON_DLL(JSONNode&) operator<<(JSONNode &json, const INT64_PARAM ¶m) { + auto n = json.find(param.szName); + if (n != json.end()) + json.erase(n); + json.push_back(JSONNode(param.szName, param.iValue)); return json; } LIBJSON_DLL(JSONNode&) operator<<(JSONNode &json, const SINT64_PARAM ¶m) { + auto n = json.find(param.szName); + if (n != json.end()) + json.erase(n); + char str[40]; _i64toa(param.iValue, str, 10); return json << CHAR_PARAM(param.szName, str); @@ -41,12 +53,20 @@ LIBJSON_DLL(JSONNode&) operator<<(JSONNode &json, const SINT64_PARAM ¶m) LIBJSON_DLL(JSONNode&) operator<<(JSONNode &json, const BOOL_PARAM ¶m) { + auto n = json.find(param.szName); + if (n != json.end()) + json.erase(n); + json.push_back(JSONNode(param.szName, param.bValue)); return json; } LIBJSON_DLL(JSONNode&) operator<<(JSONNode &json, const CHAR_PARAM ¶m) { + auto n = json.find(param.szName); + if (n != json.end()) + json.erase(n); + if (param.szValue == nullptr) { JSONNode tmp(JSON_NULL); tmp.set_name(param.szName); json.push_back(tmp); @@ -62,12 +82,20 @@ LIBJSON_DLL(JSONNode&) operator<<(JSONNode &json, const CHAR_PARAM ¶m) LIBJSON_DLL(JSONNode&) operator<<(JSONNode &json, const WCHAR_PARAM ¶m) { + auto n = json.find(param.szName); + if (n != json.end()) + json.erase(n); + json.push_back(JSONNode(param.szName, ptrA(mir_utf8encodeW(param.wszValue)).get())); return json; } LIBJSON_DLL(JSONNode&) operator<<(JSONNode &json, const NULL_PARAM ¶m) { + auto n = json.find(param.szName); + if (n != json.end()) + json.erase(n); + JSONNode newOne(JSON_NULL); newOne.set_name(param.szName); json.push_back(newOne); @@ -76,6 +104,10 @@ LIBJSON_DLL(JSONNode&) operator<<(JSONNode &json, const NULL_PARAM ¶m) LIBJSON_DLL(JSONNode&) operator<<(JSONNode &json, const JSON_PARAM ¶m) { + auto n = json.find(param.szName); + if (n != json.end()) + json.erase(n); + JSONNode newOne(param.node); newOne.set_name(param.szName); json.push_back(newOne); -- cgit v1.2.3