Как поменять парсер JSON $ ref? - PullRequest
0 голосов
/ 15 ноября 2018

Недавно я нашел ответ на этот пост хорошим решением проблемы, с которой я столкнулся, и теперь я могу взять большой JSON-ответ с объектами $ ref внутри него и проанализировать его, чтобы я мог на самом деле добраться до этих $ refсвойства.Однако я сталкиваюсь с проблемой, когда пытаюсь отправить сплющенный назад на сервер, с которым я работаю.Это работает нормально, если я извлекаю JSON с сервера и отправляю обратно с той же структурой $ ref, которая была у него изначально, поэтому мой вопрос в том, знает ли кто-нибудь хороший способ вернуть этот код обратно в исходную форму, сохранив все значения, которые я изменил?Любая помощь очень ценится.

Разбор JSON (доступ к $ Ref) Угловой

this.fixReferences = function (json) {
    var tree = json;

    for (var x in tree) {
        if ((typeof (tree[x]) === 'object') && (tree[x] !== null)) {
            var result = dfsVisit(tree[x]);
            tree[x] = result;
        }
    }

    return tree;
}

function dfsVisit(tree) {
    for (var x in tree) {
        if ((typeof (tree[x]) === 'object') && (tree[x] !== null)) {
            var result = dfsVisit(tree[x]);
            tree[x] = result;
        }
    }
    if (tree["$ref"] !== undefined) {
        var ref = tree.$ref;
        if (elements[ref] !== undefined) {
            tree = elements[ref];
        }

    } else if (tree["$id"] !== undefined) {
        var element = tree;
        elements[element.$id] = element;
    }

    return tree;
}
...