4

3つのjsonオブジェクトを含むサンプルファイル「sample.json」があります

{"A":"something1","B":"something2","C":"something3","D":"something4"}{"A":"something5","B":"something6", "C":"something7","D":"something8"}{"A":"something9","B":"something10","C":"something11","D":"something12"}

(上記のファイルには改行はありません)

jsoncpp を使用して 3 つの json オブジェクトをすべて読み取りたい。

最初のオブジェクトを読み取ることはできますが、その後はできません。

ここに私のコードの関連部分があります

    Json::Value root;   // will contains the root value after parsing.
    Json::Reader reader;
    std::ifstream test("sample.json", std::ifstream::binary);
    bool parsingSuccessful = reader.parse(test, root, false);
    int N = 3;
    if (parsingSuccessful)
    {
         for (size_t i = 0; i < N; i++)
         {
                std::string A= root.get("A", "ASCII").asString();
                std::string B= root.get("B", "ASCII").asString();
                std::string C= root.get("C", "ASCII").asString();
                std::string D= root.get("D", "ASCII").asString();
               //print all of them
        }
    }
4

2 に答える 2

6

あなたの JSON ファイルは構文的に無効だと思います。www.json.orgを参照してください。ファイルには単一のobjectまたはarrayが含まれている必要があります。たとえば、この場合は次のようになります。

[{"A":"something1","B":"something2","C":"something3","D":"something4"},
 {"A":"something5","B":"something6","C":"something7","D":"something8"}, 
 {"A":"something9","B":"something10","C":"something11","D":"something12"}]

次に、ループ内の配列の各オブジェクトにアクセスできます。

for (Json::Value::ArrayIndex i = 0; i != root.size(); i++)
{
    std::string A = root[i].get("A", "ASCII").asString();
    // etc.
}
于 2013-10-25T13:44:01.837 に答える