--- libelwix/inc/elwix/ajson.h 2024/12/05 12:33:49 1.7.60.2 +++ libelwix/inc/elwix/ajson.h 2025/08/25 12:44:59 1.9.2.2 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: ajson.h,v 1.7.60.2 2024/12/05 12:33:49 misho Exp $ +* $Id: ajson.h,v 1.9.2.2 2025/08/25 12:44:59 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004 - 2024 +Copyright 2004 - 2025 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -166,15 +166,30 @@ double json_token2dbl(const char *jstr, jtok_t * __res */ int json_token2bool(const char *jstr, jtok_t * __restrict tok); /* - * json_token2array() - Convert token to string array + * json_token2vars() - Convert token to string variable array * * @jstr = JSON string * @tok = Token for convert * return: =NULL error or !=NULL allocated array with string variables, * after use should be ait_freeVars() */ +array_t *json_token2vars(const char *jstr, jtok_t * __restrict tok); +/* + * json_token2array() - Convert token to string array + * + * @jstr = JSON string + * @tok = Token for convert + * return: =NULL error or !=NULL allocated array with strings, + * after use should be json_freearray() + */ array_t *json_token2array(const char *jstr, jtok_t * __restrict tok); +#define json_freearray(x) do { \ + assert((x)); \ + array_Free(*(x)); \ + array_Destroy((x)); \ + } while(0) + /* * json_findbykey() - Find token data by key * @@ -219,6 +234,22 @@ jtok_t *json_findbypos(unsigned long pos, jtok_t * __r * return: -1 on error or >=0 scope of object */ long json_objscope(const char *key, const char *jstr, jtok_t * __restrict toks, int toksnum); +/* + * json_validate() - Validate JSON + * + * @jstr = JSON string + * @started = if started != NULL then here will return start position of found JSON + * return: -1 error or >=0 where valid JSON ends + */ +int json_validate(const char *jstr, int *started); +/* + * json_marshaling() - Prepare JSON to one continues line + * + * @jstr = JSON string + * @space = if it is 0 then spaces will be removed + * return NULL error or !=NULL ready JSON for proceeding + */ +char *json_marshaling(char * __restrict jstr, int space); /*