将JSON字符串输出的部分转换为boolean

时间:2014-10-09 20:10:45

标签: javascript json

有没有办法将JSON字符串的某些部分转换为布尔值?

我的JSON字符串示例:

{
    "file_id": { 
        "width": "560", 
        "height": "270", 
        "esc_button": "1", 
        "overlay_close": "1", 
        "overlay_opacity": "1" 
    }
}

如果这是我的个人项目,我相信我只会将布尔值的输出转换为true/false字符串,而不是1 and 0,但因为它不是我想知道是否有办法设置JSON字符串的哪些属性是布尔值。在此示例中,布尔值应为:esc_button, overlay_close但不是overlay_opacity ...

因为这是JavaScript项目,我想知道我的选择是什么,有没有简单的方法来做到这一点?这个JSON字符串有更多的设置,我刚刚发布了它的一部分。设置会根据点击事件(different file_id === different settings)

而变化

修改

我认为我可以使用parseInt(settings[file_id].esc_button)来获取布尔值,但我是否真的必须一直使用它?可能还有其他方法我不知道。

2 个答案:

答案 0 :(得分:1)

JS是一种动态语言。你可以自己做。

if (my_object[its_property]==="1")
   my_object[its_property] = true
else
   my_object[its_property] = false;

或者更简洁my_object=(my_object[its_property]==="1");

答案 1 :(得分:1)

JSON只是一种数据格式。如果您正在使用的数据选择传递字符串"0",您将获得字符串"0",而不是false

如果"0"不是你想要的程序,你需要稍微处理一下数据。

// for example
var processData = function(jsonString) {
  var data = JSON.parse(jsonString);
  data.esc_button = (data.esc_button == "1");
  return data;
};

JSON.parse()本身并没有提供这样做的方法。它只是解码源中的数据。如果你需要不同的东西,你需要翻译。


理想情况下,您应该获取数据源,以更好的格式为您提供此数据。如果它具有真正的布尔文字值,则根本不需要进行任何翻译。

{
    "file_id": { 
        "width": 560, 
        "height": 270, 
        "esc_button": true, 
        "overlay_close": false, 
        "overlay_opacity": 1 
    }
}

如果您的JSON看起来像那样,那么您只需解析它就完成了。通过从宽度和高度中删除引号,这些现在是数字值,不需要在其他数学中使用转换。通过报告truefalse的布尔值,这些将被解析为布尔文字,而不是字符串。一切正常。

这也解决了歧义。在您的原始JSON中,"1" true"1" opacity的值为{{1}},我假设它是一个从0到1的数字。现在,您可以查看原始JSON数据并查看差异。