/* grid = ediMakeGrid("[ \ { id: '1', country: 'Australia' }, \ { id: '2', country: 'China' }, \ ]"); */ EdiGrid *ediMakeGrid(cchar *json) { MprHash *obj, *row; MprKey *kp; EdiGrid *grid; EdiRec *rec; int r, nrows, nfields; if ((obj = mprDeserialize(json)) == 0) { return 0; } nrows = mprGetHashLength(obj); if ((grid = ediCreateBareGrid(NULL, "", nrows)) == 0) { return 0; } for (r = 0, ITERATE_KEYS(obj, kp)) { if (kp->type != MPR_JSON_OBJ) { continue; } row = (MprHash*) kp->data; nfields = mprGetHashLength(row); if ((rec = ediCreateBareRec(NULL, "", nfields)) == 0) { return 0; } if (ediSetFields(rec, row) == 0) { return 0; } grid->records[r++] = rec; } return 0; }
/* rec = ediMakeRec("{ id: 1, title: 'Message One', body: 'Line one' }"); */ EdiRec *ediMakeRec(cchar *json) { MprHash *obj; MprKey *kp; EdiRec *rec; EdiField *fp; int f, nfields; if ((obj = mprDeserialize(json)) == 0) { return 0; } nfields = mprGetHashLength(obj); if ((rec = ediCreateBareRec(NULL, "", nfields)) == 0) { return 0; } for (f = 0, ITERATE_KEYS(obj, kp)) { if (kp->type == MPR_JSON_ARRAY || kp->type == MPR_JSON_OBJ) { continue; } fp = &rec->fields[f++]; fp->valid = 1; fp->name = kp->key; fp->value = kp->data; fp->type = EDI_TYPE_STRING; fp->flags = 0; } return rec; }
MprHash *ediMakeHash(cchar *fmt, ...) { MprHash *obj; va_list args; va_start(args, fmt); obj = mprDeserialize(sfmtv(fmt, args)); va_end(args); return obj; }
PUBLIC MprHash *makeHash(cchar *fmt, ...) { va_list args; cchar *str; va_start(args, fmt); str = sfmtv(fmt, args); va_end(args); return mprDeserialize(str); }