centralize node to object copy

This commit is contained in:
Jan-Piet Mens
2015-08-29 22:45:03 +02:00
parent f75da78b36
commit f49d0e43a7
3 changed files with 21 additions and 9 deletions
+1 -8
View File
@@ -550,14 +550,7 @@ static int candidate_line(char *line, void *param)
char *key = f->string_;
if ((node = json_find_member(o, key)) != NULL) {
if (node->tag == JSON_STRING)
json_append_member(newo, key, json_mkstring(node->string_));
else if (node->tag == JSON_NUMBER)
json_append_member(newo, key, json_mknumber(node->number_));
else if (node->tag == JSON_BOOL)
json_append_member(newo, key, json_mkbool(node->bool_));
else if (node->tag == JSON_NULL)
json_append_member(newo, key, json_mknull());
json_copy_element_to_object(newo, key, node);
}
}
json_delete(o);
+18
View File
@@ -48,6 +48,24 @@ char *slurp_file(char *filename, int fold_newlines)
return (buf);
}
/* Copy the node into obj */
int json_copy_element_to_object(JsonNode *obj, char *key, JsonNode *node)
{
if (obj->tag != JSON_OBJECT)
return (FALSE);
if (node->tag == JSON_STRING)
json_append_member(obj, key, json_mkstring(node->string_));
else if (node->tag == JSON_NUMBER)
json_append_member(obj, key, json_mknumber(node->number_));
else if (node->tag == JSON_BOOL)
json_append_member(obj, key, json_mkbool(node->bool_));
else if (node->tag == JSON_NULL)
json_append_member(obj, key, json_mknull());
return (TRUE);
}
int json_copy_to_object(JsonNode * obj, JsonNode * object_or_array, int clobber)
{
JsonNode *node;
+2 -1
View File
@@ -11,7 +11,8 @@
const char *isotime(time_t t);
char *slurp_file(char *filename, int fold_newlines);
int json_copy_to_object(JsonNode * obj, JsonNode * object_or_array, int clobber);
int json_copy_to_object(JsonNode *obj, JsonNode * object_or_array, int clobber);
int json_copy_element_to_object(JsonNode *obj, char *key, JsonNode *node);
int json_copy_from_file(JsonNode * obj, char *filename);
int splitter(char *s, char *sep, char **parts);
JsonNode *json_splitter(char *s, char *sep);