Skip to content

Commit ccea788

Browse files
author
Nikita Glukhov
committed
Add JsonGetObjectSize()
1 parent 8f88c0f commit ccea788

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/backend/utils/adt/json_generic.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,27 @@ jsonGetArraySize(JsonContainer *array)
282282
return size;
283283
}
284284

285+
uint32
286+
JsonGetObjectSize(JsonContainer *object)
287+
{
288+
JsonValue val;
289+
JsonIterator *it;
290+
JsonIteratorToken tok;
291+
uint32 size = 0;
292+
293+
Assert(JsonContainerIsObject(object));
294+
295+
it = JsonIteratorInit(object);
296+
297+
while ((tok = JsonIteratorNext(&it, &val, true)) != WJB_DONE)
298+
{
299+
if (tok == WJB_KEY)
300+
size++;
301+
}
302+
303+
return size;
304+
}
305+
285306
static void
286307
jsonvInitContainer(JsonContainerData *jc, const JsonValue *val)
287308
{

src/include/utils/json_generic.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,7 @@ extern JsonValue *jsonFindLastKeyInObject(JsonContainer *obj, const char *key,
524524
extern JsonValue *jsonFindValueInArray(JsonContainer *array, const JsonValue *elem);
525525
extern uint32 jsonGetArraySize(JsonContainer *array);
526526
extern JsonValue *jsonGetArrayElement(JsonContainer *array, uint32 index);
527+
extern uint32 JsonGetObjectSize(JsonContainer *object);
527528

528529
extern bool JsonValueScalarEquals(const JsonValue *aScalar,
529530
const JsonValue *bScalar);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy