ref: c8424921dcd153c866b8e0f558f41f84eb4c78ed
parent: 0693246c2bcf364b8afedc190f6820ae5f257f5f
author: sirjofri <sirjofri@sirjofri.de>
date: Sun Mar 15 13:23:45 EDT 2026
support structtojson for object arrays
--- a/rjson.c
+++ b/rjson.c
@@ -110,7 +110,7 @@
jel = jel->next;
}
assert(jel);
- jel->name = strdup(name);
+ jel->name = name ? strdup(name) : nil;
jel->val = jn;
}
@@ -117,12 +117,15 @@
JSON*
rstructtojson(void *src, Rjson *rjson)
{- JSON *json, *j;
+ JSON *json, *j, *jk;
Rjson *rj;
+ int c;
int *i;
double *n;
char **s;
char *o;
+ char **arr;
+ void *entry;
if (!src) { werrstr("invalid src");@@ -164,7 +167,14 @@
s = (char**)((char*)src + rj->addr);
j->s = strdup(*s);
break;
- case JSONArray: // TODO
+ case JSONArray:
+ i = (int*)((char*)src + rj->countaddr);
+ arr = (char**)((char*)src + rj->addr);
+ for (c = 0; c < *i; c++) {+ entry = *arr + c*rj->arrsize;
+ jk = rstructtojson(entry, rj->sub);
+ jappend(j, nil, jk);
+ }
break;
}
}
--
⑨