shithub: rjson

Download patch

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;
 		}
 	}
--