back-port JSON and accompanying Foundation portions (JSONString, Dynamic::Var etc)

This commit is contained in:
Alex Fabijanic
2017-09-25 15:15:05 -05:00
parent 741fead666
commit 6efab2cd58
103 changed files with 22184 additions and 29859 deletions

View File

@@ -16,6 +16,7 @@
#include "Poco/JSON/ParseHandler.h"
#include "Poco/JSON/Object.h"
#include "Poco/JSON/JSONException.h"
using Poco::Dynamic::Var;
@@ -47,7 +48,6 @@ void ParseHandler::reset()
void ParseHandler::startObject()
{
Object::Ptr newObj = new Object(_preserveObjectOrder);
if (_stack.empty()) // The first object
{
_result = newObj;
@@ -124,18 +124,25 @@ void ParseHandler::key(const std::string& k)
void ParseHandler::setValue(const Var& value)
{
Var parent = _stack.top();
if (_stack.size())
{
Var parent = _stack.top();
if (parent.type() == typeid(Array::Ptr))
{
Array::Ptr arr = parent.extract<Array::Ptr>();
arr->add(value);
if (parent.type() == typeid(Array::Ptr))
{
Array::Ptr arr = parent.extract<Array::Ptr>();
arr->add(value);
}
else if (parent.type() == typeid(Object::Ptr))
{
Object::Ptr obj = parent.extract<Object::Ptr>();
obj->set(_key, value);
_key.clear();
}
}
else if (parent.type() == typeid(Object::Ptr))
else
{
Object::Ptr obj = parent.extract<Object::Ptr>();
obj->set(_key, value);
_key.clear();
throw JSONException("Attempt to set value on an empty stack");
}
}