在javascript中为javascript存储数组

Storing arrays in javascript for javascript

本文关键字:javascript 数组 存储 中为      更新时间:2023-09-26

我看过很多关于如何从javascript序列化数组以发送给PHP文件的文章,然后PHP文件将反序列化回数组,等等…

我有一个大嵌套的关联数组在我的javascript,我需要保存到一个字符串,并在以后的日期检索和转换回字符串在javascript。其他程序都不会碰这个。如果序列化的数据是人类可读的,这可能很方便,但这绝对不是必需的。

有一个中间PHP文件,但它只有4行长:它所做的就是将字符串保存到一个文件中,并在请求时将其发送回来。我对在PHP中解析数组不感兴趣。

将javascript中的多嵌套关联数组转换为字符串并再次返回的最快和最简单的方法是什么?

JSON是JavaScript语言的一个子集,它被广泛用作序列化格式,不仅用于JavaScript,而且越来越多地用于其他语言。它是人类可读的,除了大多数实现删除了可选的空白,这使得它有点困难。

现代浏览器对JSON的支持是开箱即用的,对于旧的浏览器,你需要包含一个像json2.js这样的库。

要序列化,使用JSON.stringify方法。

var myObject = {a: 2, b: 3, c: [1, 2, 3]};
var serialized = JSON.stringify(myObject);
// serialized == "{"a":2,"b":3,"c":[1,2,3]}"

要反序列化,可以使用JSON.parse方法。

var recovered = JSON.parse(serialized);

我已经构造了这样的数组:var data = new Array(); data["John"] = "John Smith";

啊,这是个问题。JavaScript Array不意味着用作关联数组,它意味着作为一个正常的零索引非关联数组。你可以给任何JavaScript对象分配属性(键/值对),这就是为什么你的代码是工作的,但事实上,你的对象是一个Array可能会导致问题。如果你只是创建一个new Object(),事情应该工作得更好。

您将需要将数组序列化为JSON:

serialized = JSON.stringify(myobject)

把它拿回来

myobject = JSON.parse(serialized)
http://www.json.org/js.html

var someArray = [];
someArray.push({someObjectProperty: 'someValue' });
someArray.push({someObjectProperty: 'someValue2' });
console.log(someArray);
var stringVersion = JSON.stringify(someArray);//You can save the string version anywhere...
console.log(stringVersion);
var someNewArray = JSON.parse(stringVersion);
console.log(someNewArray);

每个人都在Javascript端很好地解释了这一点,但这是在PHP端如何发生的:

<?php
  $arr = Array(1, 2, 3, 'a', 'b', 'c');  // an array in PHP
  echo json_encode($arr); // output the array as JSON: [1,2,3,'a','b','c']
?>
<?php
  $json = "[1,2,3,'a','b','c']"; // a JSON string to be parsed by PHP
  $arr = json_decode($json); // this is our original array in PHP again
?>