我想开始使用ES6Map而不是JS对象,但我被耽搁了,因为我不知道如何JSON。stringify()
aMap
。我的键保证是字符串,我的值将始终列出。我真的需要编写一个包装器方法来序列化吗?
你不能。
地图的关键点可以是任何东西,包括对象。但是JSON语法只允许字符串作为键。所以在一般情况下是不可能的。
我的键保证是字符串,我的值将永远是列表
在这种情况下,可以使用普通对象。它将具有以下优点:
您不能直接对Map
实例进行字符串化,因为它没有任何属性,但您可以将其转换为元组数组:
jsonText = JSON.stringify(Array.from(map.entries()));
相反,使用
map = new Map(JSON.parse(jsonText));
JSON. stringify和JSON. parse都支持第二个参数。通过下面的替换器和复兴器,可以添加对本地地图对象的支持,包括深度嵌套的值
function replacer(key, value) {
if(value instanceof Map) {
return {
dataType: 'Map',
value: Array.from(value.entries()), // or with spread: value: [...value]
};
} else {
return value;
}
}
function reviver(key, value) {
if(typeof value === 'object' && value !== null) {
if (value.dataType === 'Map') {
return new Map(value.value);
}
}
return value;
}
用法:
const originalValue = new Map([['a', 1]]);
const str = JSON.stringify(originalValue, replacer);
const newValue = JSON.parse(str, reviver);
console.log(originalValue, newValue);
结合阵列、对象和贴图的深度嵌套
const originalValue = [
new Map([['a', {
b: {
c: new Map([['d', 'text']])
}
}]])
];
const str = JSON.stringify(originalValue, replacer);
const newValue = JSON.parse(str, reviver);
console.log(originalValue, newValue);
我有一对看起来像 第二个元素是一个字符串,我从函数get()从http://alvinalexander.com/scala/how-to-write-scala-http-get-request-client-source-fromurl.这里是函数: 现在我想把这个字符串转换成json,从中获取图片url。(来自此)https://stackoverflow.com/a/38271732/14
主要内容:1.ES6字符串属性,2.ES6字符串方法,3.JavaScript字符串方法JavaScript字符串是一个代表字符序列的对象。 通常,字符串用于保存基于文本的值,例如人名或产品说明。在JavaScript中,单引号或双引号内的任何文本均视为字符串。 有两种方法可以在JavaScript中创建字符串: 通过使用字符串文字 通过使用字符串对象(使用关键字) 下面来看看如何使用这两种方法在JavaScript中创建字符串。 通过使用字符串文字 可以使用双引号或单引号来创建字符
ES6引入了一种通过反引号( ` )标记的新的字符串文字类型。 这些字符串文字可以包括换行符,并且有一个新的机制用于将变量插入字符串:
问题内容: 如何将一个JSON.stringify()一集? 在Chromium 43中不起作用的事情: 我希望得到类似于序列化数组的东西。 问题答案: 不能直接与集合一起使用,因为存储在集合中的数据不会存储为属性。 但是您可以将集合转换为数组。然后,您将能够正确地对其进行分类。 以下任何一项都可以解决问题:
需要转成
问题内容: 给定一串JSON数据,如何安全地将该字符串转换为JavaScript对象? 显然,我可以使用类似的方法不安全地执行此操作: 但这使我容易受到包含其他代码的JSON字符串的影响,仅进行评估似乎很危险。 问题答案: 只要您可以保证使用合理的现代浏览器,它就是一种纯JavaScript方法。