Javascript 如何将TreeModel Js模型输出为JSON
因此,我将使用triyng更新类别树中的一些ID 编辑之后,我想将树转储到JSON格式的文件中 但是当从TreeModel输出其他键时,也会输出 如何将已编辑的树输出为JSON(仅限模型) 我设法用null替换了其他键值,到目前为止,我得到了以下结果:Javascript 如何将TreeModel Js模型输出为JSON,javascript,treemodel,Javascript,Treemodel,因此,我将使用triyng更新类别树中的一些ID 编辑之后,我想将树转储到JSON格式的文件中 但是当从TreeModel输出其他键时,也会输出 如何将已编辑的树输出为JSON(仅限模型) 我设法用null替换了其他键值,到目前为止,我得到了以下结果: const axios = require('axios') const TreeModel = require('tree-model') const fs = require('fs') const url = 'https://my-ap
const axios = require('axios')
const TreeModel = require('tree-model')
const fs = require('fs')
const url = 'https://my-api-uri-for-categories'
const dumpPath = `${process.cwd()}/data/test/categories.json`
const getCategories = async () => {
try {
const response = await axios.get(url)
return response.data.categories
} catch (error) {
console.log('Error reading categories', error)
}
}
const dumpJsonTofile = data => {
try {
console.log('Dumping to file')
console.log(data)
fs.writeFileSync(
dumpPath,
JSON.stringify(data, (k, v) => {
if (k === 'parent' || k === 'config' || k === 'children') return null
else return v
}),
'utf8'
) // write it back
} catch (error) {
console.log('Error dumping categories', error)
}
}
const scraping = async category => {
try {
const response = await axios.get(category.url)
const document = response.data
const json = document.match(/{"searchTerm"(.*);/g)[0]
const data = JSON.parse(json.replace(';', ''))
return data
} catch (error) {
console.log(`Error while scraping category: ${category.name}`, error)
}
}
async function run() {
const categories = await getCategories()
const categoriesTree = new TreeModel({
childrenPropertyName: 'items',
})
const root = categoriesTree.parse({ id: 0, origin: {}, items: categories })
root.walk(async node => {
const category = node.model
console.log(`scraping category: ${category.name}...`)
if (!category.url) return console.log(`skipping (root?)...`)
const data = await scraping(category)
category.id = data.categoryId
})
dumpJsonTofile(root)
}
run()
但仍会输出如下所示的节点对象:
{
"config":null,
"model":{},
"children":null
}
我需要输出所有只显示每个项的模型键值的树试试
JSON.stringify(root.model)
为什么不像创建root.walk
那样创建一个对象/数组呢?我想嵌套的复杂性太深了,无法创建所需的树,这就是我首先依赖于库的原因好吧,我必须添加一些东西,我以前已经试过了,但由于某种原因没有成功并输出:“null”,但现在尝试成功后,也许我在另一个地方解决了这个问题,但这仍然是只输出模型的正确方法,谢谢你提醒我回到起点。现在唯一的问题是没有反映类别模型的更改,例如:添加另一个对象键,输出仍保持不变。