当前位置: 首页 > 面试题库 >

在JSON.stringify()的输出中隐藏某些值

戎永福
2023-03-14
问题内容

是否可以将某些字段排除在json字符串中?

这是一些伪代码

var x = {
    x:0,
    y:0,
    divID:"xyz",
    privateProperty1: 'foo',
    privateProperty2: 'bar'
}

我想排除privateProperty1和privateproperty2出现在json字符串中

所以我想,我可以使用stringify replacer函数

function replacer(key,value)
{
    if (key=="privateProperty1") then retun "none";
    else if (key=="privateProperty2") then retun "none";
    else return value;
}

并在串

var jsonString = json.stringify(x,replacer);

但是在jsonString中,我仍然将其视为

{...privateProperty1:value..., privateProperty2:value }

我想在其中没有privateproperties的字符串。


问题答案:

在Mozilla的文档说回报undefined(而不是"none"):

http://jsfiddle.net/userdude/rZ5Px/

function replacer(key,value)
{
    if (key=="privateProperty1") return undefined;
    else if (key=="privateProperty2") return undefined;
    else return value;
}

var x = {
    x:0,
    y:0,
    divID:"xyz",
    privateProperty1: 'foo',
    privateProperty2: 'bar'
};

alert(JSON.stringify(x, replacer));

这是一种复制方法,以防万一您决定走那条路线(根据您的评论)。

http://jsfiddle.net/userdude/644sJ/

function omitKeys(obj, keys)
{
    var dup = {};
    for (var key in obj) {
        if (keys.indexOf(key) == -1) {
            dup[key] = obj[key];
        }
    }
    return dup;
}

var x = {
    x:0,
    y:0,
    divID:"xyz",
    privateProperty1: 'foo',
    privateProperty2: 'bar'
};

alert(JSON.stringify(omitKeys(x, ['privateProperty1','privateProperty2'])));

编辑 -我更改了底部功能中的功能键,以免混淆。



 类似资料:
  • 输入一个语句后按回车键,MATLAB自动在屏幕上显示结果,但如果该行命令是以";"结尾,则MATLAB仍会进行运算赋值,但不显示任何输出结果.这一点在生成复杂矩阵时特别有用.例如: A = magic(100);

  • 问题内容: 我开发了一个简单的演示应用程序,其中包含启动屏幕,地图和一些常规屏幕。 我在顶部有一个包含徽标的操作栏。在我的手机(Galaxy s1 I9000 V2.3)上一切看起来都不错,但是当我在Galaxy s2 v4上对其进行测试时,动作栏也会出现在初始屏幕和地图屏幕中。 spalsh和map活动甚至都没有从ActionBarActivity继承,所以这怎么可能?我如何使它消失? 表现:

  • 我想让我的Bash脚本对最终用户来说更加优雅。当Bash执行命令时,如何隐藏输出? 例如,当Bash执行时 以下内容将显示给执行Bash的用户: 现在我想对用户隐藏这一点,而是显示: 我怎样才能完成这项任务?我一定会帮助使脚本更加用户友好。如果发生错误,则应向用户显示。 我想知道如何显示相同的消息,而一组命令正在执行。

  • 我开发了一个应用程序,应该在SO用户的帮助下在原始图像的顶部显示框架...然而,我有一个小问题...问题是原始图像的某些部分隐藏在框架下...我的问题是为什么会发生这种情况,我如何修复它?...我希望图像适合框架...这样原始图像就会出现在框架下...我是Android新手,所以任何关于createScaledBitmap的代码帮助以及解释都是值得赞赏的... 以下是我的代码。。 活动_main。

  • 对于 被选中的国家 ,只显示 输入线 或者 输出线   只显示输入线   只显示输出线 controller.showInOnly(true); controller.showInOnly(false); controller.showOutOnly(true); controller.showOutOnly(false);

  • 问题内容: 我在Ubuntu上使用,并且有一个Python 2.7脚本可以打印并说出一条消息: 产生所需的声音,但由于一些错误(,没有套接字连接)而使外壳混乱,因此我无法轻松读取之前打印的内容。退出代码为0。 不幸的是,没有记录的选项可以关闭它的冗长性,因此我正在寻找一种方法,仅在视觉上使其静音并保持打开的外壳干净以进行进一步的交互。 我怎样才能做到这一点? 问题答案: 将输出重定向到DEVNUL