有没有办法将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)
来获取布尔值,但我是否真的必须一直使用它?可能还有其他方法我不知道。
答案 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看起来像那样,那么您只需解析它就完成了。通过从宽度和高度中删除引号,这些现在是数字值,不需要在其他数学中使用转换。通过报告true
或false
的布尔值,这些将被解析为布尔文字,而不是字符串。一切正常。
这也解决了歧义。在您的原始JSON中,"1"
true
和"1"
opacity
的值为{{1}},我假设它是一个从0到1的数字。现在,您可以查看原始JSON数据并查看差异。