2017-05-19 265 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個要素的匹配搜索,這是由if語句的條目數真實判斷,雖然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陣列。通過查看Jansson作者在GitHub上的測試,您可以得到see some good examples

相關問題