【问题标题】:Serialize JQuery Object to JSON - should this work?将 JQuery 对象序列化为 JSON - 这应该有效吗?
【发布时间】:2012-07-23 03:06:46
【问题描述】:

这应该很简单,但在调试油脂猴脚本时我无法弄清楚。可以将 JQuery 对象(例如单个元素)转换为 JSON 吗? 例如JSON.stringify($("<p />")) 我遇到了周期性引用错误。

我一直在这里试验:http://jsfiddle.net/q7ywV/2/

html

<p> whatever </p>
<p> whatever2 </p>

js

try {
  zoom = JSON.stringify($("p").eq(0));
  console.log(zoom);
}
catch (e) {
    console.log(e);
}

【问题讨论】:

  • 我还尝试了 cycle.js 库来通过 JSON-Path 处理这个问题。使用非本机 JSON.stringify,我得到堆栈错误。
  • 愚蠢的是,我基本上已经弄清楚了,问题是 DOM 元素在设计上包含循环引用,正如stackoverflow.com/a/4277815/657764 中提到的那样,我不确定为什么 JSON.decycle 不起作用.也许对象太大了?

标签: jquery json serialization


【解决方案1】:

您不能将 dom 和期望作为 json 传递。您可以将其存储为数组转换为 JSOn,然后使用 JSON.stringify

另外,你获取字符串的方法是错误的。下面应该只适用于字符串。您可以将一个或多个 html 元素存储为数组,然后使用 stringify。 http://jsfiddle.net/q7ywV/13/

【讨论】:

    【解决方案2】:

    显然,JSON 并非旨在表示复杂的对象,例如 DOM 元素。仅限简单对象。

    【讨论】:

    • 不是复杂性,而是循环引用。不管对象有多复杂,如果它不包含循环引用,应该可以对其进行字符串化。
    • 我发现有趣的是,Douglas Crockford 的 cycle.js link 无法处理(或回收)DOM 元素。需要什么?
    猜你喜欢
    • 2012-04-23
    • 2022-01-20
    • 2019-07-03
    • 2010-10-08
    • 1970-01-01
    • 2014-06-23
    • 2016-12-22
    相关资源
    最近更新 更多