2014-11-18 6 views
1

하나의 JSonArray를 출력으로 원합니다. json 문자열을 해당 배열에 추가하려고합니다. 나는 이것을 위해 json-glib와 C++을 사용하고있다. 나는 Google에서 많은 것을 수색했지만 모두 헛된 것입니다. 이 같은 것을 원합니다.하나의 JsonArray에 많은 json 문자열을 추가하려면 어떻게해야합니까?

[{ "id": "i_am_id", "i_am_C", "태그": [{ "하나": "값", "2": "값 "}]}, {}, {}]

"tag "는 작성된 문자열의 jsonarray입니다. 나는 string, int, jsonarrays와 같은 필드가있는 많은 json의 jsonarray를 원한다. 이걸 도와주세요.

+0

'태그'는 json 객체가 아닌 json 배열처럼 보입니다. 대괄호없이 "tag": { "one": "value", "two": "value"}이면 충분합니다. – ALittleDiff

+0

@ALittleDiff 아니요, 태그에는 { "one": "value"} 등의 많은 json 문자열이 포함될 수 있습니다. 내 요구 사항에 따라 대괄호가 있어야합니다. 그들은 jsonObject 또는 jsonarray 일 수 있습니다, 나는 그 대괄호가 필요합니다. 제발 말해줘. – hellodear

답변

0
이 코드를 테스트 할 수
내가 JSON-입심 사용하지 않는

,
와 나는 builder의를 해제 부분을 생략
하지만 난이 당신 도움이되기를 바랍니다 :

// build an object as an element of 'tag' array. 
// {"one": "value", "two": "value"} 
JsonNode * objectAsElementOfTag; 
{ 
    JsonBuilder *builder = json_builder_new(); 
    json_builder_begin_object (builder); 

    json_builder_set_member_name (builder, "one"); 
    json_builder_add_string_value (builder, "value"); 

    json_builder_set_member_name (builder, "two"); 
    json_builder_add_string_value (builder, "value"); 

    json_builder_end_object (builder); 
    objectAsElementOfTag = json_builder_get_root (builder); 
} 

// build 'tag' array. 
// [{"one": "value", "two": "value"}] 
JsonNode * tagArray; 
{ 
    JsonBuilder *builder = json_builder_new(); 
    json_builder_begin_array (builder); 

    json_builder_add_value (builder, objectAsElementOfTag); 

    json_builder_end_array (builder); 
    tagArray = json_builder_get_root (builder); 
} 

// build the first element. 
// {"id": "i_am_id", "client":"i_am_C" ,"tag": [{"one": "value", "two": "value"}] } 
JsonNode * firstElement; 
{ 
    JsonBuilder *builder = json_builder_new(); 
    json_builder_begin_object (builder); 

    json_builder_set_member_name (builder, "id"); 
    json_builder_add_string_value (builder, "i_am_id"); 

    json_builder_set_member_name (builder, "client"); 
    json_builder_add_string_value (builder, "i_am_C"); 

    json_builder_set_member_name (builder, "tag"); 
    json_builder_add_value (builder, tagArray); 

    json_builder_end_object (builder); 
    firstElement = json_builder_get_root (builder); 
} 

// build the second element(an empty object). 
// {} 
JsonNode * secondElement; 
{ 
    JsonBuilder *builder = json_builder_new(); 
    json_builder_begin_object (builder); 

    json_builder_end_object (builder); 
    secondElement = json_builder_get_root (builder); 
} 

// build the third element(an empty object). 
// {} 
JsonNode * thirdElement; 
{ 
    JsonBuilder *builder = json_builder_new(); 
    json_builder_begin_object (builder); 

    json_builder_end_object (builder); 
    thirdElement = json_builder_get_root (builder); 
} 

// finally, build the root array which may be what you want. 
// [ {"id": "i_am_id", "client":"i_am_C" ,"tag": [{"one": "value", "two": "value"}] } ,{} ,{} ] 
JsonNode * rootArray; 
{ 
    JsonBuilder *builder = json_builder_new(); 
    json_builder_begin_array (builder); 

    json_builder_add_value (builder, firstElement); 
    json_builder_add_value (builder, secondElement); 
    json_builder_add_value (builder, thirdElement); 

    json_builder_end_array (builder); 
    rootArray = json_builder_get_root (builder); 
} 
+0

고마워. 그것은 나를 도왔다. 우리가이 결과로 만든 문자열을 받았을 때 모든 필드를 읽고 추출해야한다면 똑같은 것을 말할 수 있습니까? 나는이 과정의 역전을 의미한다. 제발 말해줘. 고마워. – hellodear

+0

죄송합니다. 결과 문자열을 읽는 문제를 도와주세요. – hellodear

+0

@hellodear :'JsonReader'를 사용하면 모든 필드를 읽을 수 있습니다. 예를 들어 배열의 첫 번째 요소를 읽을 수 있습니다 :'JsonReader * reader = json_reader_new (rootArray); json_reader_read_element (reader, 0); JsonNode * firstElement = json_reader_get_value (독자); json_reader_end_element (reader); // (abbr.)' – ALittleDiff

관련 문제