javascript - 无法以任何方式操作 JSON 对象

标签 javascript json object

我正在 Cargocollective 上创建一个网站,并使用 Javascript 自定义其中的一部分(仅允许 vanilla)。我发现 Cargo 使用 JSON 符号将整个网站存储在相同的 HTML 中,在 <script type="text/json"> 中元素。

我想从那些 JSON 对象中提取信息以在我的脚本中使用。我可以使用查询选择器选择 JSON 对象。这些对象看起来像一个 JSON 对象,typeof 返回对象。

但是,如果我尝试执行类似 myObject.key 或 myObject[0].key 的操作,我会得到“undefined”。如果我尝试 JSON.parse,我会得到“位置 1 的 JSON 中的意外标记 o”。 JSON.stringify 返回 {}。

这是它在 HTML 中的样子:(它很长,4000 个字符,这只是摘录)

<script type="text/json" data-set="ScaffoldingData" >{"id":0,"title":"Sandra Javera","project_url":0,"set_id":0,"is_homepage":false,"pin":false,"is_set":true,"in_nav":false,.........},{"id":14844451,"site_id":711279,"project_url":"Lisboa-copy","direct_link":"https:\/\/sandrajavera.com\/Lisboa-copy","type":"page","title":"Lisboa copy","title_no_html":"Lisboa copy","tags":"","display":true,"pin":false,"pin_options":null,"in_nav":false,"is_homepage":false,"backdrop_enabled":false,"is_set":false,"stack":false,"excerpt":"+\n\t\t\n..........}\"</script>

因此 JSON 对象的结构如下

{
   "key": value,
   "key": value,
   "key": value
},
{
   "key": value,
   "key": value,
   "key": value
},
{
   "key": value,
   "key": value,
   "key": value
}

所以它实际上是一个对象数组,即使没有括号。

该网站是 sandrajavera.com。任何帮助表示赞赏。谢谢。

最佳答案

将文本包裹在[]中,使结构有效,然后解析。

不过,最好在源代码中添加环绕数组大括号

const str = document.querySelector('script[data-set]').textContent.trim()
const data = JSON.parse(`[${str}]`)

console.log(data)
<script type="text/json" data-set="ScaffoldingData" >
  { "id": 1,"txt": "foo"}, { "id": 2, "txt": "bar" }
</script>

关于javascript - 无法以任何方式操作 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63542154/

相关文章:

php - 如何使用 json_encode 更正 php 中的语法

javascript - 替代 JavaScript 的 setInterval?

带有对 .cshtml 函数调用的 Javascript 变量

javascript - $().click需要按两次。 jQuery JSP

java - JSONException : No value for book_details

java 调用另一个类的方法从同一个包中打印

c# - 无法在 LINQ to Entities 查询中初始化实现 IEnumerable 'System.Collections.Generic.List` 1' 的类型

javascript - 任何动态加载 Angular Directive(指令)的方法?

javascript - 使用 Typescript/javascript 自定义排序

java - 在java中读取动态json文件并合并它们