Převeďte vnořený JSON na jednoduchý JSON v Javascriptu

Toto bude velmi často používaná funkce, kterou téměř pravidelně používáme.

V závislosti na rozmanitosti dat a jejich strukturování může odpověď API vracet velmi složité JSON. Někdy nebude stačit zachytit pouze jedno pole z celého JSON. Možná budeme muset získat mnoho polí k zobrazení na webové stránce. Procházet takto komplexní JSON by nebylo pokaždé dobrý nápad. Pokud to dokážeme převést na jednoduchý JSON, bylo by to podle situace lepší.

Doufám, že tento úvod stačí. Pojďme se vrhnout na skutečné věci.

Tady beru hodně vnořený JSON. Převedu to na jednoduchý JSON.

Zde je můj příklad JSON:

const obj = {
    first: {
        first: '1',
        second: {
            second: true,
            third: {
                third: 'third',
                fourth: {
                    fourth: 4
                }
            }
        }
    }
}

Můj požadovaný výstup by byl:

{first: '1', second: true, third: 'third', fourth: 4}

Podívejte se ještě jednou na vstup a výstup, abyste získali představu.

Pojďme kódovat něco, čeho bychom mohli dosáhnout výše:

const simpleObj = {};
function destructure(obj) {
    for (let key in obj) {
        const value = obj[key];
        const type = typeof value;
        if (['string', 'boolean'].includes(type) || (type === 'number' && !isNaN(value))) {
            simpleObj[key] = value;
        } else if (type === 'object') {
            Object.assign(simpleObj, destructure(value));
        }
    }
    return simpleObj;
}

console.log(destructure(obj));

for (let key in obj) { -> Které iteruje přes daný objekt.

const value = obj[key];
const type = typeof value;

zachycující aktuální value a jeho type .

if (['string', 'boolean'].includes(type) || (type === 'number' && !isNaN(value))) {
            simpleObj[key] = obj[key];

Ověření, pokud hodnota klíče není object . Kopírování do sampleObj obj, pokud to není object .

else if (typeof obj[key] === 'object') {
            Object.assign(simpleObj, destructure(obj[key]));
        }

V případě objektu volání stejné funkce znovu (nazvané recursion ) pro přechod na vnořené úrovně objektu. Také přiřazení všeho k sampleObj . Tento jediný objekt by tedy na konci obsahoval všechny páry klíč-hodnota.

Nakonec vrátíme daný objekt a vytiskneme jej na console .

Ocenil bych návrhy, pokud toho můžeme dosáhnout ještě lepším způsobem. Děkuji.

💎 Rád vidím vaši odpověď

  1. To se mi líbí - Dosáhl jsi sem znamená. Myslím, že si zasloužím like.
  2. Komentář - Můžeme se učit spolu.
  3. Sdílet - Umožní ostatním, aby tento zdroj považovali za užitečný.
  4. Přihlásit se k odběru/sledovat - abych zůstal v obraze s mými každodenními články.
  5. Povzbuďte mě - Můžete mi koupit kávu

Pojďme diskutovat dále.

  1. Jen DM @urstrulyvishwak
  2. Nebo zmínit
    @urstrulyvishwak

Další aktualizace:

Sledujte @urstrulyvishwak