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"
        }
    }
}

質問

期待される結果を得るために、どのように実装GetObjectして機能する必要がありますか?SetString

4

1 に答える 1

1

まず第一に、幸運:)

何が問題になっているのか正確にはわかりませんが、次のことを行う必要があります。

  • GetObjectを返すので、呼び出し*thisを連鎖させることができますGetObject
  • Json::Value期待どおりの動作をするが含まれてoperator[]います-関連付けられた値を取得し、存在しない場合は作成します。GetObject単にそれを包むことができます。mJsonObject子オブジェクトでローカルを更新することを忘れないでください。
  • SetString単に折り返しGetObject、続いて新しいJson::Valueviastring引数を作成します
于 2013-02-28T06:39:57.203 に答える