@@ -317,18 +317,18 @@ function buildObject (schema, code, name, externalSchema, fullSchema) {
317
317
var laterCode = ''
318
318
319
319
Object . keys ( schema . properties || { } ) . forEach ( ( key , i , a ) => {
320
- // Using obj. key !== undefined instead of obj.hasOwnProperty(prop) for perf reasons,
320
+ // Using obj[' key'] !== undefined instead of obj.hasOwnProperty(prop) for perf reasons,
321
321
// see https://github.com/mcollina/fast-json-stringify/pull/3 for discussion.
322
322
code += `
323
- if (obj. ${ key } !== undefined) {
323
+ if (obj[' ${ key } '] !== undefined) {
324
324
json += '${ $asString ( key ) } :'
325
325
`
326
326
327
327
if ( schema . properties [ key ] [ '$ref' ] ) {
328
328
schema . properties [ key ] = refFinder ( schema . properties [ key ] [ '$ref' ] , fullSchema , externalSchema )
329
329
}
330
330
331
- const result = nested ( laterCode , name , '.' + key , schema . properties [ key ] , externalSchema , fullSchema )
331
+ const result = nested ( laterCode , name , key , schema . properties [ key ] , externalSchema , fullSchema )
332
332
333
333
code += result . code
334
334
laterCode = result . laterCode
@@ -406,6 +406,7 @@ function nested (laterCode, name, key, schema, externalSchema, fullSchema) {
406
406
var code = ''
407
407
var funcName
408
408
const type = schema . type
409
+ const accessor = key . indexOf ( '[' ) === 0 ? key : `['${ key } ']`
409
410
switch ( type ) {
410
411
case 'null' :
411
412
code += `
@@ -414,36 +415,36 @@ function nested (laterCode, name, key, schema, externalSchema, fullSchema) {
414
415
break
415
416
case 'string' :
416
417
code += `
417
- json += $asString(obj${ key } )
418
+ json += $asString(obj${ accessor } )
418
419
`
419
420
break
420
421
case 'integer' :
421
422
code += `
422
- json += $asInteger(obj${ key } )
423
+ json += $asInteger(obj${ accessor } )
423
424
`
424
425
break
425
426
case 'number' :
426
427
code += `
427
- json += $asNumber(obj${ key } )
428
+ json += $asNumber(obj${ accessor } )
428
429
`
429
430
break
430
431
case 'boolean' :
431
432
code += `
432
- json += $asBoolean(obj${ key } )
433
+ json += $asBoolean(obj${ accessor } )
433
434
`
434
435
break
435
436
case 'object' :
436
437
funcName = ( name + key ) . replace ( / [ - . \[ \] ] / g, '' ) // eslint-disable-line
437
438
laterCode = buildObject ( schema , laterCode , funcName , externalSchema , fullSchema )
438
439
code += `
439
- json += ${ funcName } (obj${ key } )
440
+ json += ${ funcName } (obj${ accessor } )
440
441
`
441
442
break
442
443
case 'array' :
443
444
funcName = ( name + key ) . replace ( / [ - . \[ \] ] / g, '' ) // eslint-disable-line
444
445
laterCode = buildArray ( schema , laterCode , funcName , externalSchema , fullSchema )
445
446
code += `
446
- json += ${ funcName } (obj${ key } )
447
+ json += ${ funcName } (obj${ accessor } )
447
448
`
448
449
break
449
450
default :
0 commit comments