mirror of https://github.com/Icinga/icinga2.git
JsonEncode(): encode non-[]/{} objects as strings, not null
... to represent function custom vars as such in Icinga DB.
This commit is contained in:
parent
b08b30ee80
commit
fa2666fecf
|
@ -166,6 +166,7 @@ void Encode(JsonEncoder<prettyPrint>& stateMachine, const Value& value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
Array::Ptr arr = dynamic_pointer_cast<Array>(obj);
|
Array::Ptr arr = dynamic_pointer_cast<Array>(obj);
|
||||||
if (arr) {
|
if (arr) {
|
||||||
EncodeArray(stateMachine, arr);
|
EncodeArray(stateMachine, arr);
|
||||||
|
@ -173,9 +174,10 @@ void Encode(JsonEncoder<prettyPrint>& stateMachine, const Value& value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stateMachine.Null();
|
// obj is most likely a function => "Object of type 'Function'"
|
||||||
|
Encode(stateMachine, obj->ToString());
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case ValueEmpty:
|
case ValueEmpty:
|
||||||
stateMachine.Null();
|
stateMachine.Null();
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
|
/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
|
||||||
|
|
||||||
#include "base/dictionary.hpp"
|
#include "base/dictionary.hpp"
|
||||||
|
#include "base/function.hpp"
|
||||||
#include "base/namespace.hpp"
|
#include "base/namespace.hpp"
|
||||||
#include "base/array.hpp"
|
#include "base/array.hpp"
|
||||||
#include "base/objectlock.hpp"
|
#include "base/objectlock.hpp"
|
||||||
|
@ -18,6 +19,7 @@ BOOST_AUTO_TEST_CASE(encode)
|
||||||
{ "array", new Array({ new Namespace() }) },
|
{ "array", new Array({ new Namespace() }) },
|
||||||
{ "false", false },
|
{ "false", false },
|
||||||
{ "float", -1.25 },
|
{ "float", -1.25 },
|
||||||
|
{ "fx", new Function("<test>", []() {}) },
|
||||||
{ "int", -42 },
|
{ "int", -42 },
|
||||||
{ "null", Value() },
|
{ "null", Value() },
|
||||||
{ "string", "LF\nTAB\tAUml\xC3\xA4Ill\xC3" },
|
{ "string", "LF\nTAB\tAUml\xC3\xA4Ill\xC3" },
|
||||||
|
@ -31,6 +33,7 @@ BOOST_AUTO_TEST_CASE(encode)
|
||||||
],
|
],
|
||||||
"false": false,
|
"false": false,
|
||||||
"float": -1.25,
|
"float": -1.25,
|
||||||
|
"fx": "Object of type 'Function'",
|
||||||
"int": -42,
|
"int": -42,
|
||||||
"null": null,
|
"null": null,
|
||||||
"string": "LF\nTAB\tAUml\u00e4Ill\ufffd",
|
"string": "LF\nTAB\tAUml\u00e4Ill\ufffd",
|
||||||
|
@ -42,6 +45,7 @@ BOOST_AUTO_TEST_CASE(encode)
|
||||||
BOOST_CHECK(JsonEncode(input, true) == output);
|
BOOST_CHECK(JsonEncode(input, true) == output);
|
||||||
|
|
||||||
boost::algorithm::replace_all(output, " ", "");
|
boost::algorithm::replace_all(output, " ", "");
|
||||||
|
boost::algorithm::replace_all(output, "Objectoftype'Function'", "Object of type 'Function'");
|
||||||
boost::algorithm::replace_all(output, "\n", "");
|
boost::algorithm::replace_all(output, "\n", "");
|
||||||
|
|
||||||
BOOST_CHECK(JsonEncode(input, false) == output);
|
BOOST_CHECK(JsonEncode(input, false) == output);
|
||||||
|
|
Loading…
Reference in New Issue