json-schema-library
Version:
Customizable and hackable json-validator and json-schema utilities for traversal, data generation and validation
28 lines (27 loc) • 926 B
JavaScript
import { getValue } from "../utils/getValue";
import { isObject } from "../utils/isObject";
export function toDataNodes(node, data, pointer = "#", dataNodes = []) {
const currentNode = node.resolveRef();
dataNodes.push({
node: currentNode,
value: data,
pointer
});
if (isObject(data)) {
Object.keys(data).forEach((key) => {
const { node: nextNode } = currentNode.getNodeChild(key, data);
if (nextNode) {
toDataNodes(nextNode, getValue(data, key), `${pointer}/${key}`, dataNodes);
}
});
}
else if (Array.isArray(data)) {
data.forEach((next, key) => {
const { node: nextNode } = currentNode.getNodeChild(key, data);
if (nextNode) {
toDataNodes(nextNode, getValue(data, key), `${pointer}/${key}`, dataNodes);
}
});
}
return dataNodes;
}