2016-06-11 3 views
0

저는 C++ 프로젝트에서 일하고 있으며 JSON 구문 분석을 위해 rapidjson을 사용합니다. rapidjson : Document 객체를 더 작은 Document 객체로 분할하려면 어떻게해야합니까?

{ 
    "a": "valA", 
    "b": { 
    "ba": "valBA", 
    "bb": "valBB", 
    "bc": "valBC" 
    }, 
    "c": "valC" 
} 

내가 전체 JSON을 구문 분석하고 나는 모든 값을 포함하는 Document 개체를 얻을 :이 JSON이있다. 내가 원하는 것은 어떻게 든이 Document 객체를 처리하고 b 부분 만 추출하는 것입니다. 나는이 JSON을 구문 분석 된 것처럼 :

{ 
    "b": { 
    "ba": "valBA", 
    "bb": "valBB", 
    "bc": "valBC" 
    } 
} 

은 내가 Document 객체에게 자신을 구문 분석 생각하지만 그 일의 쉬운/빠른 방법이 있는지 궁금 해서요. 어떤 아이디어?

답변

1

"B"요소를 추출하고 새 문서에이 방법을 넣을 수 있습니다

#include <iostream> 
#include <rapidjson/document.h> 
#include <rapidjson/stringbuffer.h> 
#include <rapidjson/writer.h> 

using namespace rapidjson; 

int main(void) 
{ 
    const char* json = "{\"a\": \"valA\",\"b\": {\"ba\": \"valBA\",\"bb\": \"valBB\",\"bc\": \"valBC\"},\"c\": \"valC\"}"; 

    Document d; 
    d.Parse<0>(json); 

    Value& data = d["b"]; 

    Document d2; 
    d2.SetObject(); 
    d2.AddMember("b", data, d2.GetAllocator()); 

    rapidjson::StringBuffer buffer; 
    rapidjson::Writer<rapidjson::StringBuffer> writer(buffer); 
    d2.Accept(writer); 

    std::cout << buffer.GetString() << std::endl; 

    return 0; 
} 

출력 : 난 그냥 액세스하지 않으

{"b":{"ba":"valBA","bb":"valBB","bc":"valBC"}} 
+0

. 별도의'Document' 객체에 넣고 싶습니다. – TheCrafter

+0

OK, 이제는 분명합니다. 업데이트를 참조하십시오. – doqtor