34 writer->startObject();
36 for (std::pair<std::string, JsonDataPtr> pair : elements)
38 writer->writeKey(pair.first);
39 pair.second->writeJson(writer);
48 if (getKeyIndex(key) >= 0)
50 throw LocalException(
"Key \"") << key <<
"\" exists already in this json object.";
53 elements.push_back(std::make_pair(key, value));
59 add(key, value.toSharedPtr());
65 add(key, value.toSharedPtr());
71 int index = getKeyIndex(key);
75 elements.push_back(std::make_pair(key, value));
79 elements.at(
index).second = value;
93 int index = getKeyIndex(key);
97 elements.erase(elements.begin() + 1);
106 int index = getKeyIndex(key);
114 return elements.at(
index).second;
121 return elements.size();
141 for (
const std::pair<std::string, JsonDataPtr>& pair : elements)
143 o->add(pair.first, pair.second->clone());
148 std::vector<std::string>
151 std::vector<std::string> v;
152 for (uint i = 0; i < elements.size(); i++)
154 v.push_back(elements.at(i).first);
160 JsonObject::getKeyIndex(
const std::string& key)
162 for (uint i = 0; i < elements.size(); i++)
164 if (elements.at(i).first == key)
void add(const std::string &key, const JsonDataPtr &value)
JsonObjectPtr toSharedPtr() const
std::vector< std::string > getKeys() const
void set(const std::string &key, const JsonDataPtr &value)
bool remove(const std::string &key)
void writeJson(const JsonWriterPtr &writer) override
JsonDataPtr get(const std::string &key)
JsonDataPtr clone() override
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< JsonObject > JsonObjectPtr
std::shared_ptr< JsonData > JsonDataPtr
std::shared_ptr< JsonWriter > JsonWriterPtr