gpt4 book ai didi

json - 如何安全地从 JSON 1 升级到 JSON 2 wrt utf8 字符串?

转载 作者:行者123 更新时间:2023-12-04 21:49:25 26 4
gpt4 key购买 nike

我们拥有大量使用 JSON v1 API 的大型代码库:

use JSON;
my $json = objToJson($data);
my $data = jsonToObj($json);

我们想升级到 JSON v2,所以我们可以开始在新代码中使用它,因为我们遇到了其他依赖于 v2 API 的模块。 .

但是,如果我存储了由 objToJson() 创建的 utf8 字符串,它将不再被 JSON::XS 以相同的方式解码(这是 JSON v2 在幕后使用的)。
use JSON;
use JSON::XS;
use warnings;
use strict;

my $data = ["\x{263a}b"];
my $encoded = JSON::objToJson($data);
print "different!\n"
unless JSON::jsonToObj($encoded)->[0] eq JSON::XS::decode_json($encoded)->[0];
print "different!\n"
unless JSON::jsonToObj($encoded)->[0] eq JSON::XS->new->decode($encoded)->[0];

我们有什么办法可以升级到 JSON v2,但仍然保留 v1 API 以向后兼容现有代码?

最佳答案

模块在进行此类剧烈更改时应使用新名称。在这种情况下,JSON 2.x 主要是 JSON::XS 的包装器这一事实方便地意味着他们所做的正是如此。

我建议:

  • 保持安装 JSON 1.x。
  • 安装 JSON::XS。
  • 闲暇时,将 JSON 1.x 转换为 JSON::XS。
  • 如果您愿意,现在可以安全地升级到 JSON 2.x。
  • 安装 JSON 2.x
  • s/JSON::XS/JSON/g
  • 关于json - 如何安全地从 JSON 1 升级到 JSON 2 wrt utf8 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7655498/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com