标签: stringify

序列化包含循环对象值的对象

我有一个对象(解析树),其中包含对其他节点的引用的子节点.

我想序列化这个对象,使用JSON.stringify(),但我得到:JSON.stringify()因为我提到的结构.

我怎么能解决这个问题?对于我来说,序列化对象中是否表示了对其他节点的这些引用并不重要.

另一方面,在创建对象时从对象中删除这些属性似乎很乏味,我不想对解析器(narcissus)进行更改.

javascript json jsonserializer stringify

143
推荐指数
3
解决办法
12万
查看次数

JSON.stringify以漂亮的打印方式输出到div

JSON.stringify是一个json对象

result = JSON.stringify(message, my_json, 2)
Run Code Online (Sandbox Code Playgroud)

2上面的说法应该是相当打印结果.如果我这样做,它会这样做alert(result).但是,我想通过将其附加到div中来将其输出给用户.当我这样做时,我只会出现一行.(我不认为它有效,因为中断和空格不被解释为html?)

{ "data": { "x": "1", "y": "1", "url": "http://url.com" }, "event": "start", "show": 1, "id": 50 }
Run Code Online (Sandbox Code Playgroud)

有没有办法以JSON.stringify漂亮的打印方式将结果输出到div?

html javascript json pretty-print stringify

141
推荐指数
8
解决办法
17万
查看次数

Stringify(转换为JSON)具有循环引用的JavaScript对象

我有一个包含循环引用的JavaScript对象定义:它有一个引用父对象的属性.

它还具有我不想传递给服务器的功能.我如何序列化和反序列化这些对象?

我读过这样做的最好方法是使用Douglas Crockford的stringify.但是,我在Chrome中收到以下错误:

TypeError:将循环结构转换为JSON

代码:

function finger(xid, xparent){
    this.id = xid;
    this.xparent;
    //other attributes
}

function arm(xid, xparent){
    this.id = xid;
    this.parent = xparent;
    this.fingers = [];

    //other attributes

    this.moveArm = function() {
        //moveArm function details - not included in this testcase
        alert("moveArm Executed");
    }
}

 function person(xid, xparent, xname){
    this.id = xid;
    this.parent = xparent;
    this.name = xname
    this.arms = []

    this.createArms = function () {
        this.arms[this.arms.length] = new arm(this.id, this);
    }
}

function group(xid, xparent){
    this.id = …
Run Code Online (Sandbox Code Playgroud)

javascript jquery json stringify

68
推荐指数
5
解决办法
8万
查看次数

JSON.stringify深层对象

我需要一个函数从任何参数构建一个JSON有效字符串,但是:

  • 通过两次不添加对象来避免递归问题
  • 通过截断超过给定深度来避免调用堆栈大小问题

通常它应该能够以截断它们为代价来处理大对象.

作为参考,此代码失败:

var json = JSON.stringify(window);
Run Code Online (Sandbox Code Playgroud)

避免递归问题很简单:

var seen = [];
return JSON.stringify(o, function(_, value) {
    if (typeof value === 'object' && value !== null) {
        if (seen.indexOf(value) !== -1) return;
        else seen.push(value);
    }
    return value;
});
Run Code Online (Sandbox Code Playgroud)

但现在,除了复制并更改道格拉斯Crockford的代码追踪深度的,我没有发现任何方式,以避免像很深刻的对象堆栈溢出window或任何event.有简单的解决方案吗?

javascript json stringify

50
推荐指数
4
解决办法
4万
查看次数

如何正确使用JSON.stringify和json_decode()

我试图通过以下方式将多维Javascript数组传递到我网站上的另一个页面:

  • 在数组上使用JSON.stringify

  • 将结果值分配给输入字段

  • 将该字段发布到第二页

  • 在发布的值上使用json_decode

  • 然后var_dump来测试

  • (直接回显发布的变量,看它是否完全通过)

第一页的Javascript:

var JSONstr = JSON.stringify(fullInfoArray);
document.getElementById('JSONfullInfoArray').value= JSONstr;
Run Code Online (Sandbox Code Playgroud)

第二页的PHP:

$data = json_decode($_POST["JSONfullInfoArray"]);
var_dump($data);

echo($_POST["JSONfullInfoArray"]);
Run Code Online (Sandbox Code Playgroud)

echo工作正常,但var_dump返回NULL

我做错了什么?


这让我解决了:

$postedData = $_POST["JSONfullInfoArray"];
$tempData = str_replace("\\", "",$postedData);
$cleanData = json_decode($tempData);
var_dump($cleanData);
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但帖子是通过一堆"\"字符分隔字符串中的每个变量

使用json_last_error()Bart返回时将其弄清楚JSON_ERROR_SYNTAX

javascript php arrays json stringify

43
推荐指数
5
解决办法
10万
查看次数

将javascript对象或数组转换为json以获取ajax数据

所以我正在创建一个包含元素信息的数组.我遍历所有元素并保存索引.出于某种原因,我无法将此数组转换为json对象!

这是我的数组循环:

var display = Array();
$('.thread_child').each(function(index, value){
   display[index]="none";
   if($(this).is(":visible")){
      display[index]="block";
   }
});
Run Code Online (Sandbox Code Playgroud)

我尝试通过以下方式将其转换为JSON对象:

data = JSON.stringify(display);
Run Code Online (Sandbox Code Playgroud)

它似乎没有发送正确的JSON格式!

如果我像这样手动编码,它可以工作并发送信息:

data = {"0":"none","1":"block","2":"none","3":"block","4":"block","5":"block","6":"block","7":"block","8":"block","9":"block","10":"block","11":"block","12":"block","13":"block","14":"block","15":"block","16":"block","17":"block","18":"block","19":"block"};
Run Code Online (Sandbox Code Playgroud)

当我对JSON.stringify对象发出警报时,它看起来与手动编码的对象相同.但它不起作用.

我疯了试图解决这个问题!我在这里错过了什么?发送此信息以获得手动编码格式的最佳方法是什么?

我使用这个ajax方法发送数据:

$.ajax({
        dataType: "json",
        data:data,
        url: "myfile.php",
        cache: false,
        method: 'GET',
        success: function(rsp) {
            alert(JSON.stringify(rsp));
        var Content = rsp;
        var Template = render('tsk_lst');
        var HTML = Template({ Content : Content });
        $( "#task_lists" ).html( HTML );
        }
    });
Run Code Online (Sandbox Code Playgroud)

使用GET方法,因为我正在显示信息(不更新或插入).只将显示信息发送到我的php文件.


结束解决方案


var display = {};
$('.thread_child').each(function(index, value){
   display[index]="none";
   if($(this).is(":visible")){
      display[index]="block";
   }
});

$.ajax({
        dataType: "json",
        data: display, …
Run Code Online (Sandbox Code Playgroud)

javascript arrays json stringify

32
推荐指数
2
解决办法
21万
查看次数

如何字符串化事件对象?

JSON.stringify(eventObject);

得到:

TypeError: Converting circular structure to JSON


dojox.json.ref.toJson(eventObject);

得到:

TypeError: Accessing selectionEnd on an input element that cannot have a selection.


是否有一些库/代码可以用来完成它?

javascript serialization json stringify

29
推荐指数
4
解决办法
2万
查看次数

JSON.stringify返回"[object Object]"而不是对象的内容

这里我创建一个JavaScript对象并将其转换为JSON字符串,但在这种情况下JSON.stringify返回"[object Object]",而不是显示对象的内容.我该如何解决这个问题,以便JSON字符串实际上包含对象的内容?

var theObject = {name:{firstName:"Mark", lastName:"Bob"}};
alert(JSON.stringify(theObject.toString())); //this alerts "[object Object]"
Run Code Online (Sandbox Code Playgroud)

javascript json stringify

29
推荐指数
3
解决办法
8万
查看次数

RegExp的序列化

所以,我有兴趣发现JSON.stringify将RegExp简化为空对象 - 文字(小提琴):

JSON.stringify(/^[0-9]+$/) // "{}"
Run Code Online (Sandbox Code Playgroud)

这种行为有望吗?我意识到RegExp是一个没有要序列化属性的对象.也就是说,日期也是对象; 但JSON.stringify()设法产生一个有意义的字符串:

JSON.stringify(new Date) // "2014-07-03T13:42:47.905Z"
Run Code Online (Sandbox Code Playgroud)

我希望JSON能够通过使用给予RegExp相同的考虑.JSON.stringify

javascript json stringify

28
推荐指数
5
解决办法
1万
查看次数

限制JSON字符串化深度

当使用JSON.stringify(或类似的东西)对对象进行字符串化时,有一种方法可以限制字符串化深度,即只有n级深入到对象树中并忽略之后的所有内容(或者更好:将占位符放在那里,表示留下了一些东西出来)?

我知道这JSON.stringify需要一个表单的替换函数,function (key, value)但我没有找到一种方法来获取当前键值对的原始对象的深度,交给更换器函数.

有没有办法使用默认的JSON.stringify实现?或者我已经达到了我应该自己实现字符串化的程度?或者是否有另一个可以推荐的具有此选项的字符串化库?

javascript json stringify

28
推荐指数
3
解决办法
1万
查看次数