From c80b9920fcbcbf75e3d7e8fe092bf6e15d9d40b8 Mon Sep 17 00:00:00 2001 From: Andrew Dunstan Date: Fri, 31 Mar 2017 14:25:25 -0400 Subject: Transform or iterate over json(b) string values Dmitry Dolgov, reviewed and lightly edited by me. --- src/include/utils/jsonapi.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/include/utils/jsonapi.h') diff --git a/src/include/utils/jsonapi.h b/src/include/utils/jsonapi.h index 8f132d732be..50c29c3a866 100644 --- a/src/include/utils/jsonapi.h +++ b/src/include/utils/jsonapi.h @@ -14,6 +14,7 @@ #ifndef JSONAPI_H #define JSONAPI_H +#include "jsonb.h" #include "lib/stringinfo.h" typedef enum @@ -131,4 +132,19 @@ extern JsonLexContext *makeJsonLexContextCstringLen(char *json, */ extern bool IsValidJsonNumber(const char *str, int len); +/* an action that will be applied to each value in iterate_json(b)_string_vaues functions */ +typedef void (*JsonIterateStringValuesAction) (void *state, char *elem_value, int elem_len); + +/* an action that will be applied to each value in transform_json(b)_string_values functions */ +typedef text * (*JsonTransformStringValuesAction) (void *state, char *elem_value, int elem_len); + +extern void iterate_jsonb_string_values(Jsonb *jb, void *state, + JsonIterateStringValuesAction action); +extern void iterate_json_string_values(text *json, void *action_state, + JsonIterateStringValuesAction action); +extern Jsonb *transform_jsonb_string_values(Jsonb *jsonb, void *action_state, + JsonTransformStringValuesAction transform_action); +extern text *transform_json_string_values(text *json, void *action_state, + JsonTransformStringValuesAction transform_action); + #endif /* JSONAPI_H */ -- cgit v1.2.3