1

问题描述

我正在尝试为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"
        }
    }
}

问题

我必须如何实施GetObjectSetString运作才能获得预期的结果?

4

1 回答 1

1

首先,祝你好运:)

我不确定你到底遇到了什么问题,但这里有一些你需要做的事情:

  • GetObject返回*this,以便您可以链接GetObject调用
  • Json::Value包含一个operator[]执行您期望的操作 - 获取关联的值,如果它不存在则创建它。GetObject可以简单地包装它。mJsonObject请记住使用子对象更新您的本地。
  • SetString简单地换行,然后通过字符串参数GetObject构造一个新的Json::Value
于 2013-02-28T06:39:57.203 回答