2017-05-19 278 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

相关问题