从HTML文本文件中提取JSON对象

时间:2019-07-16 15:08:22

标签: javascript json

我有一些要从HTML文件提取的对象。

<h1> heading</h1>
<p> dsfhklsd sdlfjklsdj ljsdkflj</p>
{"data" : {"here" : "test"} }
<h2> heading</h2>
<p> dsfhklsd sdlfjklsdj ljsdkflj</p>
<p> dsfhklsd sdlfjklsdj ljsdkflj</p>
{"data2" : {"here" : "test"} }

我将如何提取对象,以便随后可以使用JSON.parse()解析它们并将其用于我的JS代码中?

从文本/ html文件中实质上剥离不是对象的任何内容。

{"data" : {"here" : "test"} }
{"data2" : {"here" : "test"} }

2 个答案:

答案 0 :(得分:4)

您可以遍历节点并选择文本节点。

var objs = Array.from(document.body.childNodes) // select all the nodes
  .filter( // pick out just the lines we want
    node => 
      node.nodeType === Node.TEXT_NODE &&  // text node
      node.nodeValue.trim().length  // get rid of line feeds
  ).map(node =>
    JSON.parse(node.nodeValue.trim())) // convert to object

console.log(objs)
<h1> heading</h1>
<p> dsfhklsd sdlfjklsdj ljsdkflj</p>
{"data" : {"here" : "test"} }
<h2> heading</h2>
<p> dsfhklsd sdlfjklsdj ljsdkflj</p>
<p> dsfhklsd sdlfjklsdj ljsdkflj</p>
{"data2" : {"here" : "test"} }

答案 1 :(得分:0)

假设您的源代码正在由JavaScript作为字符串处理,我将使用Regex删除所有html元素(假设您想要的JSON不会像示例中那样包装在html元素中)或解析所有内容在花括号之间。