Eu tenho um objeto JSON e eu quero tirar alguns dos valores a partir dele para criar um novo objeto no React.js. No entanto, não importa o que eu tento eu recebo erros relativos ao valor ou ser chave indefinido.
Json
{
"meat":{"drink":"Bovril", "courses":{ "main":"chicken", "pudding":"jelly" },
"vegetarian":{"drink":"milkshake", "courses":{"main":"cheese","pudding":"ice cream"},
"vegan":{"drink":"spinach juice", "courses":{"main":"lettuce","pudding":"apple"}
}
Resultados desejados
Eu gostaria de criar dinamicamente um objeto chamado defaultValues que corresponde à seguinte se eu estava a código difícil. Como você pode ver, este é criado a partir dos valores no arquivo json acima:
const defaultValues: {
meat: "chicken",
vegetarian: "cheese",
vegan: "lettuce"
}
Eu tentei o seguinte baseado em resposta a uma pergunta semelhante , mas ele não funciona:
minha tentativa
const json = Json; //this contains the contents of my json file above
const defaultValues = {};
Object.keys(json).forEach(function(key) {
defaultValues[key.meat].push([key.courses.main]);
});
Erro
Recebo o seguinte erro:
×TypeError: Cannot read property 'push' of undefined
Alguém pode aconselhar sobre como fazer isso?
Muito Obrigado,
Katie
Primeiro de tudo, eu corrigi o JSON. Depois que eu iterar as chaves do objeto JSON para criar o objeto defaultValues. Em sua tentativa de ter sido tratar um objeto como uma matriz. Somente matrizes têm o método de premir.
const json = {
"meat": {
"drink":"Bovril",
"courses":{
"main":"chicken",
"pudding":"jelly"
}
},
"vegetarian":{
"drink":"milkshake",
"courses":{
"main":"cheese",
"pudding":"ice cream"
}
},
"vegan":{
"drink":"spinach juice",
"courses":{
"main":"lettuce",
"pudding":"apple"
}
}
};
const defaultValues = {};
Object.keys(json).forEach(e => {
defaultValues[e] = json[e]["courses"].main;
});
console.log(defaultValues);