fix(JSON): Arbitrary indent of 2 applied to JSON string objects Var conversion #3253

This commit is contained in:
Alex Fabijanic
2022-05-21 11:48:48 -07:00
parent cd85052231
commit 78558f868d
4 changed files with 43 additions and 4 deletions

View File

@@ -379,7 +379,7 @@ public:
void convert(std::string& s) const void convert(std::string& s) const
{ {
std::ostringstream oss; std::ostringstream oss;
_val->stringify(oss, 2); _val->stringify(oss);
s = oss.str(); s = oss.str();
} }
@@ -513,7 +513,7 @@ public:
void convert(std::string& s) const void convert(std::string& s) const
{ {
std::ostringstream oss; std::ostringstream oss;
_val.stringify(oss, 2); _val.stringify(oss);
s = oss.str(); s = oss.str();
} }

View File

@@ -570,7 +570,7 @@ public:
void convert(std::string& s) const void convert(std::string& s) const
{ {
std::ostringstream oss; std::ostringstream oss;
_val->stringify(oss, 2); _val->stringify(oss);
s = oss.str(); s = oss.str();
} }
@@ -712,7 +712,7 @@ public:
void convert(std::string& s) const void convert(std::string& s) const
{ {
std::ostringstream oss; std::ostringstream oss;
_val.stringify(oss, 2); _val.stringify(oss);
s = oss.str(); s = oss.str();
} }

View File

@@ -1701,6 +1701,43 @@ void JSONTest::testStringifyPreserveOrder()
} }
void JSONTest::testVarConvert()
{
std::string json = "{ \"foo\" : { \"bar\" : \"baz\", \"arr\": [1, 2, 3]} }";
Parser parser;
Var result;
try
{
result = parser.parse(json);
}
catch (JSONException& jsone)
{
std::cout << jsone.message() << std::endl;
assertTrue(false);
}
assertTrue(result.type() == typeid(Object::Ptr));
std::string cvt;
result.convert(cvt);
assertTrue(cvt == "{\"foo\":{\"arr\":[1,2,3],\"bar\":\"baz\"}}");
Object::Ptr object = result.extract<Object::Ptr>();
Object::Ptr f = object->getObject("foo");
Var o = f;
cvt.clear();
o.convert(cvt);
assertTrue(cvt == "{\"arr\":[1,2,3],\"bar\":\"baz\"}");
Var a = f->get("arr");
cvt.clear();
a.convert(cvt);
assertTrue(cvt == "[1,2,3]");
}
void JSONTest::testValidJanssonFiles() void JSONTest::testValidJanssonFiles()
{ {
Poco::Path pathPattern(getTestFilesPath("valid")); Poco::Path pathPattern(getTestFilesPath("valid"));
@@ -2249,6 +2286,7 @@ CppUnit::Test* JSONTest::suite()
CppUnit_addTest(pSuite, JSONTest, testPrintHandler); CppUnit_addTest(pSuite, JSONTest, testPrintHandler);
CppUnit_addTest(pSuite, JSONTest, testStringify); CppUnit_addTest(pSuite, JSONTest, testStringify);
CppUnit_addTest(pSuite, JSONTest, testStringifyPreserveOrder); CppUnit_addTest(pSuite, JSONTest, testStringifyPreserveOrder);
CppUnit_addTest(pSuite, JSONTest, testVarConvert);
CppUnit_addTest(pSuite, JSONTest, testValidJanssonFiles); CppUnit_addTest(pSuite, JSONTest, testValidJanssonFiles);
CppUnit_addTest(pSuite, JSONTest, testInvalidJanssonFiles); CppUnit_addTest(pSuite, JSONTest, testInvalidJanssonFiles);
CppUnit_addTest(pSuite, JSONTest, testInvalidUnicodeJanssonFiles); CppUnit_addTest(pSuite, JSONTest, testInvalidUnicodeJanssonFiles);

View File

@@ -68,6 +68,7 @@ public:
void testPrintHandler(); void testPrintHandler();
void testStringify(); void testStringify();
void testStringifyPreserveOrder(); void testStringifyPreserveOrder();
void testVarConvert();
void testValidJanssonFiles(); void testValidJanssonFiles();
void testInvalidJanssonFiles(); void testInvalidJanssonFiles();