首页 > 解决方案 > Dancer2 对服务器上的所有内容进行字符串化,但不在本地

问题描述

我在我的 mac 的 pleenv 的 v5.26.2 上本地运行相同的代码(我的 Dancer2 应用程序)但是当我运行应用程序时(无论是使用 plackup 或 starman 还是在 Apache 后面代理,使用我们没有 SSL,或者使用 Curl 在每个位置本地请求)服务器-running 实例正在对响应负载中的所有内容进行字符串化。

"custid": "5000",在 ubuntu 16 服务器上(系统 perl v5.22.1 - 库与我的本地实例的版本相同)

"custid": 5000,在我的本地机器上。

在我的config.yml我得到(除其他外,但这是唯一的engines障碍)

content_type: "application/json"
serializer: "JSON"

engines:
  serializer:
    JSON:
      pretty: 1

数据本身确实来自数据库,但我的本地机器和服务器DBIx::Class分别连接到具有相同 ResultSources 的同一个远程(不是 ubuntu 本地)mysql 服务器。

我能想到的一件事是要使用的服务器,Cpanel::JSON::XS并且在结果到达序列化程序之前将结果作为字符串“触摸”,但我不确定如何检查每个正在运行的应用程序实例上实际使用的 JSON 库。

那么 - 我如何使用相同的代码获得不同的字符串化?如何检查每个实例上使用的 JSON 库?

标签: jsonperlserializationubuntu-16.04

解决方案


Dancer2 使用 JSON::MaybeXS来决定加载哪个模块。您可以使用其上的->JSON类方法来询问它加载了哪个。

$ perl -MJSON::MaybeXS -E 'say JSON::MaybeXS->JSON'

推荐阅读