Я пытаюсь написать оболочку для JsonCpp. Моя обертка должна иметь следующие функции
Parse(const string& input)
GetString(string& output, const string name, bool optional = true)
SetString(const string& value, const string name, bool optional = true)
GetObject(const string& objectName)
У меня есть вызов мой класс обертки Parser
class Parser
{
private:
Json::Value mJsonObject;
public:
bool Parse(const string& input);
bool GetString(string& output, const string name, bool optional = true);
bool SetString(const string& value, const string name, bool optional = true);
Parser& GetObject(const string& objectName);
};
В коде я хочу написать следующее:
void foo()
{
Parser::GetObject("IN").GetObject("Params").SetString("Param1", "this is json");
}
называя это, я хочу создать следующий JSON
{
"IN" : {
"Params" : {
"Param1":"this is json"}
}
}
Как я должен реализовать GetObject
а также SetString
функция для того, чтобы получить ожидаемый результат?
Прежде всего, удачи 🙂
Я не уверен, с чем именно у вас проблемы, но вот несколько вещей, которые вам нужно сделать:
GetObject
возвращается *this
, так что вы можете цепи GetObject
звонкиJson::Value
содержит operator[]
который делает то, что вы ожидаете — получить соответствующее значение, создавая его, если он не существует. GetObject
можно просто обернуть это. Не забудьте обновить ваш местный mJsonObject
с дочерним объектом.SetString
просто заворачивает GetObject
с последующим построением нового Json::Value
через строковый аргументДругих решений пока нет …