微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript 数组相当于 PHP 中的 json_encode() 和 setcookie()

如何解决Javascript 数组相当于 PHP 中的 json_encode() 和 setcookie()

PHP 中,我有一个用 JSON 编码的数组,然后我变成了一个 cookie。

<?PHP 

    $array = array("name" => "bob","age" => "20");
    $arrayJSON = json_encode($array);
    setcookie("name",$arrayJSON,time() + (86400 * 33),"/");

?>

我现在正在尝试用 Javascript 做同样的事情。 json_encoding Javascript 数组然后将其设置为 cookie 的 Javascript 等价物是什么?这是我目前所拥有的:

<script>

    var array = new Array();
    array["name"] = "bob";
    array["age"] = "20";
    // Need help here
    array = *javascript_json_encode*(array); // Do the Javascript equivalent of PHP's json_encode();
    document.cookie = "name="+array;

</script>

我正在尝试这样做,以便 Javascript cookie 的格式与 PHP cookie 的格式相同。当你在浏览器控制台输入“document.cookie”时,我需要Javascript cookie格式如下。

我需要将 "name: bob""age: 20" 变成 %7B%22name%22%3A%22bob%22%2C%22age%22%3A%2220%22%7D"。别管我怎么做。

解决方法

将我的评论转换为答案。 PHP 处理数组的方式与 JS 不同——它对顺序递增的整数结构和键值对字典/hashmap 类结构使用一种结构。

JS 数组只接受连续整数,所以 const a = new Array(); a["foo"] = "bar" 从根本上是错误的——几乎没有任何用例可以在数组对象上设置这些属性,即使它看起来有效。

如果您需要键值对结构,请使用 objectMap。如果要将其字符串化为 JSON,请使用 JSON.stringify。如果要将其编码为 URI 组件,请使用 encodeURIComponent

综合起来:

const obj = {name: "bob",age: 20};
const json = JSON.stringify(obj);
const encoded = encodeURIComponent(json);

console.log(obj);
console.log(json);
console.log(encoded);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。