2012-10-26 10 views
4

저는 JSON 데이터를 구문 분석하기 위해 파서 (http://jsoncpp.sourceforge.net) jsoncpp을 사용하고 있습니다. 우리는 다음과 같은 JSON이있는 경우 그래서, :json-cpp 파서에서 속성 이름과 속성 값을 얻으려면 어떻게해야합니까?

{ "name": "Joseph", "age": 20 } 

어떻게이름조셉 재산 이름을 얻을 수 있습니다 ... 나이 20 이후? OK, 우리가 보편적으로을 수행 할 수 있습니다

string e = root.get(propertyName, defaultValue).asString(); 

는 우리가 원하는 것을 실제을 넣어 :

이제
string e = root.get(name, "Mark").asString(); 

, 변수 전자 요셉, 그것은 작동합니다. 그러나 이 있으니 ""이름은 "입니다. 나는 QUERY (기능을 묻지 않고 "이름" (재산의 이름)과 "요셉" (재산의 가치)을 받고 싶지 않습니다.

그것이 필드 (예를 들어/C++ C)에 저장하는 것이 가장 좋은 것입니다 후 :

property[name][0] = "Joseph" 
property[age][0] = 20 

내가 어떻게 할 수 있습니까? 아니면 다른 아이디어?

+0

설명서에서 무엇을 배웠습니까? 우리에게 묻기 전에 어떤 사전 연구를 했습니까? –

+0

문서는이 문제에 관해 아무 말도하지 않습니다. – RePRO

+0

나는 당신이 당신의 질문의 마지막 부분으로 무엇을했는지 전혀 모른다. 그러나 나는 나의 대답에서 속성 이름 틈을 채우려 고 노력했다. –

답변

5

getMemberNames() 함수를 사용하여 Json :: Value 객체의 모든 멤버 이름을 가져올 수 있습니다. 그러면 다른 표준 라이브러리 컨테이너와 마찬가지로 .begin().end()을 사용하여 반복 할 수있는 객체가 반환됩니다. 사실, 반환 유형은 std::vector<std::string>의 별칭입니다.

멤버 이름을 확인한 후에는 각 객체의 값을 가져 오기 위해 이미 반복 수행하고 .get(std::string &, const ValueType &)을 사용할 수 있어야합니다. 열쇠.


JSON 개체는 본질적으로 순서가 지정되지 않으므로 순서가 지정된 이름 목록에 반드시 의존 할 수는 없습니다. 정렬 된 객체가 필요하다면 JSON 객체가 아닌 JSON 배열을 사용해야합니다.

+0

아니요, C++에서 미래에 다음과 같이해야합니다 : string age = 20; 문자열 이름 = "Joseph"; void fc (age, name); 하지만 우리는 부동산 이름 ** 이름 **에 대해 알지 못합니다. – RePRO

+0

시도해 볼 수있는 것으로 편집되었습니다. –

+0

더 나은 수정되었습니다. 감사합니다. 이건 어때? 각각의 (code in obj) { cout << "name ="<< key << "value ="<< obj [key]; }'code' – RePRO

-8

기본적으로 키를 열거하고 해당 값을 추출하는 방법을 묻는 중입니까?

제발 read thedocumentation — 여기에 필요한 기능 호출이 나열되어 있습니다.

+4

이 대답에 대해 확실하지 않습니다.질문자가 몇 가지 개념적 문제를 겪고있는 것처럼 보였고 참을성없는 답변에 포함 된 문서에 쉽게 접근 할 수없는 것 같습니다. –

+2

설명서에서이 특정 질문에 대한 대답을 찾을 수 없습니다. ;) – RePRO

+1

어떻게 볼 수 있습니다, 아무도 나를 이해하지 못합니다. ;) – RePRO

관련 문제