Amazon ion 序列化/反序列化JSON?

Amazon ion 序列化/反序列化JSON?,amazon-ion,Amazon Ion,我对使用离子还不熟悉,所以请原谅这个可能很简单的问题。在看一本食谱样本时 ION可以接收JSON对象而不是字符串吗?执行类似下面的操作,将未格式化变量从字符串更改为JSON对象,将导致writer返回零字节 let ion = require('ion-js'); let unformatted = {level1: {level2: {level3: "foo"}, x: 2}, y: [a,b,c]}; let reader = ion.makeReader(unformatted);

我对使用离子还不熟悉,所以请原谅这个可能很简单的问题。在看一本食谱样本时

ION可以接收JSON对象而不是字符串吗?执行类似下面的操作,将未格式化变量从字符串更改为JSON对象,将导致writer返回零字节

let ion = require('ion-js');

let unformatted = {level1: {level2: {level3: "foo"}, x: 2}, y: [a,b,c]};

let reader = ion.makeReader(unformatted);
let writer = ion.makePrettyWriter();
writer.writeValues(reader);
writer.close();
console.log(String.fromCharCode.apply(null, writer.getBytes()));
是的,object=JSON.parse(string)和string=JSON.stringify(object)是您需要的。但是,示例中的JSON格式不正确,不应使用变量:

{"level1":{"level2":{"level3":"foo"},"x":2},"y":[1,2,3]}
假设a=1,b=2,c=3,例如,如果你指的是文本a,b,c,那么:

{"level1":{"level2":{"level3":"foo"},"x":2},"y":["a","b","c"]}
一旦做了这件事:

JSON.stringify({"level1":{"level2":{"level3":"foo"},"x":2},"y":["a","b","c"]});


是等效的。

JSON.parse/JSON.stringify是显而易见的解决方案,但在我看来,它们有点违背了使用离子的目的。对于大型对象/字符串,JSON.parse/JSON.stringify的速度很慢,我认为ION会解决这个问题……JSON.parse和JSON.stringify是这些转换的本机实现。可能它们是最快和最安全的替代方案。当然,你可以使用离子,因为其他问题,可能是因为你在后端()上使用离子。我不明白的另一件事是,你似乎在谈论离子作为JSON库。。。但ION是另一种序列化语言。你问题的标题让我有点困惑。我明白了,我想我假设ION有一个JavaScript实现,他们也提供了更快的JSON字符串/对象序列化/反序列化(即,比本机浏览器更快),ION结构是JSON友好的。。。
JSON.stringify({"level1":{"level2":{"level3":"foo"},"x":2},"y":["a","b","c"]});
JSON.stringify(JSON.parse("{\"level1\":{\"level2\":{\"level3\":\"foo\"},\"x\":2},\"y\":[\"a\",\"b\",\"c\"]}"));