C JSON提供了很多操作JSON對(duì)象的函數(shù),包括兩個(gè)對(duì)象合并。兩個(gè)對(duì)象合并可以將兩個(gè)JSON對(duì)象合并為一個(gè),其中可以按照需要保留和覆蓋屬性。
/* 將json_object和json_object2合并為一個(gè)JSON對(duì)象 * 如果遇到相同的key,以json_object2為準(zhǔn) * 如果keep_existing為true,則保留json_object的現(xiàn)有屬性 */ json_object *json_object_merge(json_object *json_object, json_object *json_object2, bool keep_existing);
調(diào)用上面的函數(shù)將會(huì)返回一個(gè)新的JSON對(duì)象,它是由參數(shù)中的兩個(gè)JSON對(duì)象合并而成的。在合并過程中,如果兩個(gè)JSON對(duì)象中存在相同的key,那么新的JSON對(duì)象將以第二個(gè)JSON對(duì)象為準(zhǔn)。如果keep_existing參數(shù)設(shè)置為true,則表示保留第一個(gè)JSON對(duì)象中已有的屬性。
以下是一個(gè)合并JSON對(duì)象的示例:
json_object *json_object = json_tokener_parse("{\"name\": \"Tom\", \"age\": 20}"); json_object *json_object2 = json_tokener_parse("{\"name\": \"Jerry\", \"gender\": \"male\"}"); json_object *merge_object = json_object_merge(json_object, json_object2, false); printf("%s", json_object_to_json_string(merge_object)); // {"name":"Jerry","age":20,"gender":"male"}
在上面的示例中,我們創(chuàng)建了兩個(gè)JSON對(duì)象,通過調(diào)用json_object_merge函數(shù),將它們合并成了一個(gè)新的JSON對(duì)象。由于第二個(gè)JSON對(duì)象中的name屬性的值是“Jerry”,因此在新的JSON對(duì)象中,name屬性的值也是“Jerry”。