1
私はjsonオブジェクトの配列を繰り返し、特定の要素を別の要素に入れています。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の()それは、if文のエントリの数で真の判定であることを確信しています。あなたが指摘できる明らかな問題はありますか?私はjanssonライブラリを使用しています。
「json_array_append_new」と「json_array_append」を使用する理由は何ですか?また、戻り値をmallocやappendのような呼び出しにチェックし、エラーがないことを確認してください。 – Kcvin
また、 'json_t * resultArr = json_array(); 'を使用してください。 – Kcvin
ありがとう、json_array()はトリックを行いました! –