javascript - 如何将 TreeModel Js 模型输出为 JSON
问题描述
因此,我尝试使用TreeModelJS从类别树中更新一些 id 。
编辑后我想将树转储到 JSON 格式的文件中。
但是当从 TreeModel 输出其他键时,也会输出。
如何将编辑后的树输出为 JSON(仅限模型)?
我设法用 null 替换了其他键值,到目前为止我得到了这个:
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()
但这仍然会输出一个像这样的 Node 对象:
{
"config":null,
"model":{},
"children":null
}
我需要输出所有树,只显示每个项目的模型键值
解决方案
试试JSON.stringify(root.model)
。
推荐阅读
- c++ - 如何通过 std::thread 生成多个线程?
- android - Gradle 重复输入错误:META-INF/MANIFEST.MF(或如何从 jar 中删除文件)
- r - 如何在 R 中的大型数据集(15GB)上运行有监督的 ML 模型?
- php - 尝试部署我们的 S4 程序,调试时出现致命错误
- angular - 使用纯 Angular 和 .Net 核心 Web API 从头开始将 Angular 集成到现有 MVC 视图或单独的解决方案中
- git - git -cant 拉取或提交
- java - 制作可以具有可变数量元素的对象数组
- javascript - 在 Heroku 上构建的 Angular (Ionic) 应用程序 - 错误:ENOENT
- c - C - 在 2D Array Minesweeper 中循环“种植地雷”不起作用
- pandas - 如何获得没有前缀的假人?