javascript - json bool 值转换为字符串

标签 javascript php json

我有以下 .json(保存为名为:settings.json 的文件):

[{"compact": false, "noPadding": true}]

单击时,我想将“compact”的 bool 值更改为相反的状态。这是 我的功能是这样做(那里有一点 react ,但我认为这对我的问题来说不重要):

onClick={editJson(this, "settings", "compact", this.context.settings[0]["compact"], !this.context.settings[0]["compact"])}

它执行以下功能:

function editJson(component, filename, field, oldvalue, newvalue) {
    var json = component.state[filename] || [];
    var i;
    for (i = 0; i < json.length; i++) {
        if (json[i][field] === oldvalue) {
            json[i][field] = newvalue
        }
    }
    $.post('json/write.php', {filename: filename + '.json', data: json}).then(function (data) {
        queryJson(component, filename);
    });
}

然后通过执行 write.php 写回我的 .json:

<?php
file_put_contents($_POST['filename'], json_encode($_POST['data']));
return ($_POST['data']);

但是现在我的 bool 值变成了字符串(我不想要):

[{"compact": "true","noPadding": "true"}]

我认为问题出在 javascript 弱类型或我的 php 上,但我无法找出解决方案。

在这种情况下如何将 bool 值保留为 bool 值?

最佳答案

问题在于 POST 数据始终是字符串。这就是它的工作原理...

但是您可以迭代 POST 数据并使用 PHP 的 filter_var将字符串转换为 bool 值

filter_var(YOUR_POSTDATA, FILTER_VALIDATE_BOOLEAN);

关于javascript - json bool 值转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33829385/

相关文章:

php utf8 文本无法正确呈现

arrays - 如何使用 ng-repeat 遍历 JSON 中的数组数组?

javascript - 带有 "a"标签的 Ember View 助手的意外行为

javascript - 如何在 NodeJS 的 javascript 中一次导入多个变量?

javascript - 使用 angular.js 访问和修改在模板中启动的模型

php - 使用 php 抓取 html 页面?

javascript - Angular JS UT 验证服务上的方法是否被调用

php - UTF-8贯穿始终

javascript - 下拉列表中的 Json 解析器错误

c# - 使用 Json.Net 解析 JSON 时如何从 IEnumerables 中删除空值