【问题标题】:Serializing/Deserializing JSON?序列化/反序列化 JSON?
【发布时间】:2020-01-10 11:43:58
【问题描述】:

我是使用 ION 的新手,所以请原谅这个可能很简单的问题。在查看documentation 中提供的食谱样本之一...

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()));

ION 可以接收 JSON 对象而不是字符串吗?执行类似下面的操作,将 unformatted 变量从字符串更改为 JSON 对象,导致写入器的字节为零...

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()));

【问题讨论】:

    标签: amazon-ion


    【解决方案1】:

    是的,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.stringify(JSON.parse("{\"level1\":{\"level2\":{\"level3\":\"foo\"},\"x\":2},\"y\":[\"a\",\"b\",\"c\"]}"));
    

    是等价的。

    【讨论】:

    • JSON.parse/JSON.stringify 是显而易见的解决方案,但在我看来,它们有点违背了使用 ION 的目的。 JSON.parse/JSON.stringify 对于大型对象/字符串来说很慢,这是我印象中 ION 会解决的地方......
    • JSON.parse 和 JSON.stringify 是这些转换的本机实现。可能它们是最快和最安全的选择。
    • 当然您可以使用 ION,因为其他问题,可能是因为您在后端使用 ION (amzn.github.io/ion-docs/guides/why.html)。我不明白的另一件事是,您似乎在谈论 ION一个 JSON 库......但 ION 是其他序列化语言。你的问题的标题让我有点困惑。
    • 我明白了,我想我假设 ION 有一个 JavaScript 实现,它们还提供了一个更快(即比本机浏览器更快)的 JSON 字符串/对象的序列化/反序列化,其中 ION 结构是 JSON -友好...
    猜你喜欢
    • 1970-01-01
    • 2019-11-17
    • 2020-10-23
    • 2020-10-19
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多