有没有办法将 JSON 字符串的某些部分转换为 bool 值?
我的 JSON 字符串示例:
{
"file_id": {
"width": "560",
"height": "270",
"esc_button": "1",
"overlay_close": "1",
"overlay_opacity": "1"
}
}
如果这是我的个人项目,我相信我只会将 bool 值的输出转换为 true/false
字符串,而不是 1 和 0
,但因为它不是我想知道是否有一种方法可以设置 JSON 字符串中的哪些属性是 bool 值。在此示例中, bool 值应为:esc_button,overlay_close
,但不是 overlay_opacity
...
既然这是 JavaScript 项目,我想知道我的选择是什么,有什么简单的方法可以做到这一点吗?这个 JSON 字符串还有更多设置,我刚刚发布了其中的一部分。设置根据点击事件变化(不同的file_id ===不同的设置)
编辑:
只是想我可以使用parseInt(settings[file_id].esc_button)
来获取 bool 值,但我真的必须一直使用它吗?可能还有其他我不知道的方法。
最佳答案
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()
本身没有提供执行此操作的方法。它只是对源中的数据进行解码。如果您需要不同的东西,您需要翻译。
理想情况下,您应该让数据源以更好的格式提供此数据。如果它具有真正的 bool 文字值,则您根本不必进行任何翻译。
{
"file_id": {
"width": 560,
"height": 270,
"esc_button": true,
"overlay_close": false,
"overlay_opacity": 1
}
}
如果您的 JSON 看起来像这样,您只需解析它即可完成。通过删除宽度和高度中的引号,这些现在是不需要翻译即可在其他数学中使用的数值。通过报告 bool 值的 true
或 false
,这些值将被解析为 bool 文字,而不是字符串。这一切都正常。
这也解决了歧义。在原始 JSON 中,您有 "1"
代表 true
和 "1"
代表 opacity
值,我假设预期是一个从 0 到 1 的数字。现在您可以查看原始 JSON 数据并查看差异。
关于javascript - 将部分 JSON 字符串输出转换为 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26287140/