JsonCpp обертка

описание проблемы

Я пытаюсь написать оболочку для 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 функция для того, чтобы получить ожидаемый результат?

1

Решение

Прежде всего, удачи 🙂

Я не уверен, с чем именно у вас проблемы, но вот несколько вещей, которые вам нужно сделать:

  • GetObject возвращается *this, так что вы можете цепи GetObject звонки
  • Json::Value содержит operator[] который делает то, что вы ожидаете — получить соответствующее значение, создавая его, если он не существует. GetObject можно просто обернуть это. Не забудьте обновить ваш местный mJsonObject с дочерним объектом.
  • SetString просто заворачивает GetObject с последующим построением нового Json::Value через строковый аргумент
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]