Crie um novo objeto em React.js a partir dos valores em um objeto json em separado

Katie7:

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

Manuel Eguiluz:

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);

Acho que você gosta

Origin http://10.200.1.11:23101/article/api/json?id=383652&siteId=1
Recomendado
Clasificación