【发布时间】:2022-01-15 05:09:36
【问题描述】:
我正在尝试解析 JSON 结构,json 结构看起来像这样:
{
children: [
{
type: "p",
children: [{
text: ""
}]
},
{
type: "social_embed",
children: [{
text: ""
}]
source_url: "some_url"
},
{
type: "p",
children: [{
type: "p",
children: [{
type: "p",
children: [{
text: ""
}]
}]
}]
},
]
}
输出将如下所示:
{
children: [
{
type: "p",
children: [{
text: ""
}]
},
{
type: "p",
children: [{
text: "some_url"
}]
},
{
type: "p",
children: [{
type: "p",
children: [{
type: "p",
children: [{
text: ""
}]
}]
}]
},
]
}
这是我正在尝试的代码:
if (currentBlock.type == "card" || currentBlock.type =="card_body")
{
parsedBlocks.map((block: any, index: any) => {
block.children = parseBlocks(block.children)
})
console.log("Blocks after parsing", parsedBlocks)
editor.insertFragment(parsedBlocks);
return true
}
const parseBlocks = (blocks: any): any => {
blocks.forEach((block: any) => {
console.log("Block ", block)
if (block.type == "social_embed") {
const newBlock = {
type: "p",
children: [
{
text: block.source_url
}
]
}
blocks[blocks.indexOf(block)] = newBlock
}
if (block.children) {
return parseBlocks(block.children)
}
})
return blocks
}
我想递归遍历所有子对象,直到对象中没有子属性,当我遇到类型为“social_embed”的对象时,我想将其替换为类型:“p”并将文本替换为 source_url 并修改整个数组,孩子们可以有无限的嵌套,但 social_embed 除了 {text: ""}
之外,它的孩子们里面不能有任何东西【问题讨论】:
-
你有一些代码,你试过了吗?出了什么问题?
-
@NinaScholz 是的,我将其添加到问题中
-
在阳光下,JavaScript 并没有什么新鲜事。这回答了你的问题了吗? stackoverflow.com/questions/15690706/…
-
您有想要的结果吗? “修改整个数组”是什么意思?
-
@JamieDixon 是的
标签: javascript arrays recursion