Bom dia amigosNeste breve artigo, quero falar sobre alguns dos recursos raramente usados do JSON.stringify (). Eles podem ser úteis para você.JSON.stringify () é frequentemente usado durante a depuração para converter um objeto ou sequência regular em uma sequência no formato JSON. Mas como esse método é usado, e podemos contornar toString ()? Vamos tentar fazer isso.
const user = {
name: 'Harry Heman',
age: 29,
job: 'developer'
}
console.log(user.toString())
[objeto Objeto] não é exatamente o que queríamos ver, é?Não pergunte por que usamos toString (). Suponha que precisamos converter um objeto em uma string.Agora tente usar JSON.stringify ():console.log(JSON.stringify(user))
Nós conseguimos, Carl!No entanto, as possibilidades de JSON.stringify () não se limitam a isso.1. Usando uma matriz como segundo argumento
Você ouviu direito, a função stringify pode ter um segundo argumento. Este argumento é a matriz de chaves do objeto que queremos exibir no console. Digamos que temos uma variedade de objetos:let users = [
{
id: 1,
login: 'harry',
password: 'qwerty',
status: 'admin',
access: true
},
{
id: 2,
login: 'alice',
password: 'qwerty',
status: 'user'
},
{
id: 3,
login: 'bob',
password: 'qwerty',
status: 'user'
},
{
id: 4,
login: 'john',
password: 'qwerty',
status: 'user'
},
{
id: 5,
login: 'jane',
password: 'qwerty',
status: 'user'
}
]
... e queremos ver qual dos usuários é o administrador (o administrador tem a propriedade "acessar").Se usarmos console.log (JSON.stringify (users)), obteremos o seguinte:[{"id":1,"login":"harry","password":"qwerty","status":"admin", "access": true},{"id":2,"login":"alice","password":"qwerty","status":"user"},{"id":3,"login":"bob","password":"qwerty","status":"user"},{"id":4,"login":"john","password":"qwerty","status":"user"},{"id":5,"login":"jane","password":"qwerty","status":"user"}]
Concordo, não muito legível.Agora tente o seguinte:console.log(JSON.stringify(users, ['id', 'access']))
Muito melhor.Para ser sincero, deve-se notar que, neste caso, poderíamos usar console.table (users):
... mas estamos falando sobre JSON.stringify (), portanto não estamos distraídos. O exemplo não é muito bom, mas acho que a ideia é clara.2. Usando uma função como segundo argumento
A função avalia cada par de valores-chave como o segundo argumento a ser especificado de acordo com a lógica dessa função. Se retornarmos indefinidos, o par de valores-chave correspondente não será exibido. Exemplo:const result = JSON.stringify(users, (key, value) => {
if (typeof value === 'string') return undefined
return value
})
console.log(result)
3. Usando um número como terceiro parâmetro
O terceiro argumento é responsável por espaços. Se esse argumento for um número, cada nível de linha terá um recuo correspondente:console.log(JSON.stringify(user, null, 2))
Temos o seguinte:{
"name": "Harry Heman",
"age": 29,
"job": "developer"
}
4. Usando uma string como terceiro argumento
Se o terceiro parâmetro for uma sequência, os caracteres dessa sequência serão usados em vez de espaços:console.log(JSON.stringify(user, null, '->'))
Temos o seguinte:{
->"name": "Harry Heman",
->"age": 29,
->"job": "developer"
}
5. método toJSON
O método toJSON pode ser uma propriedade de qualquer objeto. JSON.stringify () retorna o resultado dessa função sem converter o objeto inteiro:const user = {
first: 'Harry',
last: 'Heman',
age: 29,
toJSON(){
return {
full: `${this.first} ${this.last}`
}
}
}
console.log(JSON.stringify(user))
Bônus
Além de JSON.stringify () e toJSON (), também há um método json () que retorna uma promessa (promessa). Este método é usado em solicitações do servidor.Exemplo de uso:const url = 'https://jsonplaceholder.typicode.com/users'
asyncAwaitFetch()
async function asyncAwaitFetch(){
try {
const response = await fetch(url)
const data = await response.json()
console.table(data)
} catch (error){
console.error(error)
} finally {
console.log('')
}
}
Temos o seguinte:
Agradecemos sua atenção.Feliz codificação!