将JSON字符串输出的部分转换为布尔值
是否有任何方法将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字符串有更多的设置,我刚刚发布了它的一部分。设置的变化取决于click事件(different file_id === different settings)
编辑:
只是想出我可以用parseInt(settings[file_id].esc_button)
获得布尔,但我真的必须使用所有的时间?可能还有其他方法,我不知道。
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
,我假设这个值是一个从零到一的数字。现在您可以查看原始JSON数据并查看其差异。
@mccannf可能的[标签:java]的问题? – 2014-10-09 20:19:14
据我所知,不是重复的: -/ – dvLden 2014-10-09 20:28:15