@@ -303,18 +303,18 @@ function buildObject (schema, code, name, externalSchema, fullSchema) {
303
303
var laterCode = ''
304
304
305
305
Object . keys ( schema . properties || { } ) . forEach ( ( key , i , a ) => {
306
- // Using obj. key !== undefined instead of obj.hasOwnProperty(prop) for perf reasons,
306
+ // Using obj[' key'] !== undefined instead of obj.hasOwnProperty(prop) for perf reasons,
307
307
// see https://github.com/mcollina/fast-json-stringify/pull/3 for discussion.
308
308
code += `
309
- if (obj. ${ key } !== undefined) {
309
+ if (obj[' ${ key } '] !== undefined) {
310
310
json += '${ $asString ( key ) } :'
311
311
`
312
312
313
313
if ( schema . properties [ key ] [ '$ref' ] ) {
314
314
schema . properties [ key ] = refFinder ( schema . properties [ key ] [ '$ref' ] , fullSchema , externalSchema )
315
315
}
316
316
317
- const result = nested ( laterCode , name , '.' + key , schema . properties [ key ] , externalSchema , fullSchema )
317
+ const result = nested ( laterCode , name , key , schema . properties [ key ] , externalSchema , fullSchema )
318
318
319
319
code += result . code
320
320
laterCode = result . laterCode
@@ -392,6 +392,7 @@ function nested (laterCode, name, key, schema, externalSchema, fullSchema) {
392
392
var code = ''
393
393
var funcName
394
394
const type = schema . type
395
+ const accessor = key . indexOf ( '[' ) === 0 ? key : `['${ key } ']`
395
396
switch ( type ) {
396
397
case 'null' :
397
398
code += `
@@ -400,36 +401,36 @@ function nested (laterCode, name, key, schema, externalSchema, fullSchema) {
400
401
break
401
402
case 'string' :
402
403
code += `
403
- json += $asString(obj${ key } )
404
+ json += $asString(obj${ accessor } )
404
405
`
405
406
break
406
407
case 'integer' :
407
408
code += `
408
- json += $asInteger(obj${ key } )
409
+ json += $asInteger(obj${ accessor } )
409
410
`
410
411
break
411
412
case 'number' :
412
413
code += `
413
- json += $asNumber(obj${ key } )
414
+ json += $asNumber(obj${ accessor } )
414
415
`
415
416
break
416
417
case 'boolean' :
417
418
code += `
418
- json += $asBoolean(obj${ key } )
419
+ json += $asBoolean(obj${ accessor } )
419
420
`
420
421
break
421
422
case 'object' :
422
423
funcName = ( name + key ) . replace ( / [ - . \[ \] ] / g, '' ) // eslint-disable-line
423
424
laterCode = buildObject ( schema , laterCode , funcName , externalSchema , fullSchema )
424
425
code += `
425
- json += ${ funcName } (obj${ key } )
426
+ json += ${ funcName } (obj${ accessor } )
426
427
`
427
428
break
428
429
case 'array' :
429
430
funcName = ( name + key ) . replace ( / [ - . \[ \] ] / g, '' ) // eslint-disable-line
430
431
laterCode = buildArray ( schema , laterCode , funcName , externalSchema , fullSchema )
431
432
code += `
432
- json += ${ funcName } (obj${ key } )
433
+ json += ${ funcName } (obj${ accessor } )
433
434
`
434
435
break
435
436
default :
0 commit comments