相关疑难解决方法(0)

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万
查看次数

如何在C#中将JSON对象序列化或反序列化到某个深度?

我只想要一个对象的第一个深度级别(我不想要任何孩子).我愿意使用任何可用的库.大多数库只会在达到递归深度时抛出异常,而不是仅仅忽略.如果这不可能,有没有办法忽略给定某种数据类型的某些成员的序列化?

编辑:假设我有一个像这样的对象:

class MyObject
{
    String name = "Dan";
    int age = 88;
    List<Children> myChildren = ...(lots of children with lots of grandchildren);
}
Run Code Online (Sandbox Code Playgroud)

我想删除所有子(甚至复杂类型)以返回这样的对象:

class MyObject
{
    String name = "Dan";
    int age = 88;
    List<Children> myChildren = null;
}
Run Code Online (Sandbox Code Playgroud)

.net c# serialization json

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

JavaScript:将循环引用对象的浅拷贝字符串化?

有没有办法让下面的浅拷贝只得到一层深?我有一种使用完全不同的设计来解决这个问题的方法,但我想知道是否有其他人遇到过我之前尝试转换为字符串的问题。

var SomeObjClass = function() {
    var self = this;
    this.group = {
        members: [self]
    };
};
var p = new SomeObjClass();
var str = JSON.stringify(p);
Run Code Online (Sandbox Code Playgroud)

javascript json stringify

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

标签 统计

json ×3

javascript ×2

stringify ×2

.net ×1

c# ×1

serialization ×1