Fix parsing nested models

This commit is contained in:
kolaente 2020-04-26 15:04:58 +02:00
parent 96616eff8c
commit 6c24cc66b2
No known key found for this signature in database
GPG key ID: F40E70337AB24C9B

View file

@ -10,12 +10,23 @@ export function objectToCamelCase(object) {
let parsedObject = {} let parsedObject = {}
for (const m in object) { for (const m in object) {
parsedObject[camelCase(m)] = object[m] parsedObject[camelCase(m)] = object[m]
// Recursive processing
// Prevent processing for some cases
if(object[m] === null) {
continue
}
// Call it again for arrays
if (Array.isArray(object[m])) {
parsedObject[camelCase(m)] = object[m].map(o => objectToCamelCase(o))
// Because typeof [] === 'object' is true for arrays, we leave the loop here to prevent converting arrays to objects.
continue
}
// Call it again for nested objects // Call it again for nested objects
if( if(typeof object[m] === 'object') {
typeof object[m] === 'object' && parsedObject[camelCase(m)] = objectToCamelCase(object[m])
object[m] !== null
) {
object[m] = objectToCamelCase(object[m])
} }
} }
return parsedObject return parsedObject
@ -30,14 +41,31 @@ export function objectToSnakeCase(object) {
let parsedObject = {} let parsedObject = {}
for (const m in object) { for (const m in object) {
parsedObject[snakeCase(m)] = object[m] parsedObject[snakeCase(m)] = object[m]
// Call it again for nested objects
// Recursive processing
// Prevent processing for some cases
if( if(
typeof object[m] === 'object' && object[m] === null ||
object[m] !== null && (object[m] instanceof Date)
!(object[m] instanceof Date)
) { ) {
object[m] = objectToSnakeCase(object[m]) continue
}
// Call it again for arrays
if (Array.isArray(object[m])) {
parsedObject[snakeCase(m)] = object[m].map(o => objectToSnakeCase(o))
// Because typeof [] === 'object' is true for arrays, we leave the loop here to prevent converting arrays to objects.
continue
}
// Call it again for nested objects
if(typeof object[m] === 'object') {
parsedObject[snakeCase(m)] = objectToSnakeCase(object[m])
} }
} }
console.log('end', parsedObject, object)
return parsedObject return parsedObject
} }