2017-05-19 18 views
1

json 객체의 배열을 반복하고 특정 요소를 다른 배열에 넣고 있습니다.하나의 json 배열에서 다른 배열로 객체 복사하기

char *jsonString = getList(); // reads file and returns json string 
json_error_t err; 
json_t *jsonArr = json_loads(jsonString , 0 , &err); 
int index = 0; 
json_t *value = NULL; 
json_t *resultArr = malloc(sizeof(json_t) * 100); 

json_array_foreach(jsonArr , index , value) 
{ 
    if(strcmp(json_string_value(json_object_get(value , "citizenship")) , key) == 0) 
    { 
     json_array_append_new(resultArr , value); 
    } 
} 

printf("Array size : %i\n" , (int)json_array_size(resultArr)); 

char * result = json_dumps(resultArr , JSON_INDENT(2)); 
json_decref(jsonArr); 
json_decref(resultArr); 

return result; 

은 제가 검색과 일치하는 3 개 요소가 있음을 확신하고 루프가 새로 생성 된 배열이 비어있는 것을 말한다 후에는 printf와 비록(), 경우 문 항목의 수에 의해 사실 판단이다. 당신이 지적할만한 명백한 문제가 있습니까? jansson 라이브러리를 사용하고 있습니다.

+0

'json_array_append_new'와'json_array_append'를 사용하는 이유는 무엇입니까? 또한 반환 값을 malloc 및 append와 같은 호출로 확인하고 오류가 없는지 확인하십시오. – Kcvin

+0

또한'json_t * resultArr = json_array(); '를 사용하십시오. – Kcvin

+0

대단히 감사합니다. json_array()가 트릭을했습니다! –

답변

1

의견에 명시된 바와 같이 json_array()을 사용하여 json_t 배열을 만들어야합니다.

see some good examples은 Jitson 작성자가 GitHub에 대해 수행 한 테스트를 살펴보면 확인할 수 있습니다.

관련 문제