OSGI Enroute DTO 中的字符串是 'compressed'

Strings in OSGI Enroute DTOs are 'compressed'

我当前的任务是使用 OSGI Enroute (http://enroute.osgi.org/) 和 Angular 构建应用程序(尽管我们选择使用 Angular2/4 而不是捆绑的 AngularJS ).

到目前为止一切顺利。我有一个 REST Java 应用程序,它响应来自 Angular 前端的各种请求,但我目前 运行 遇到了问题。为了使开发更容易,我在端口 4200 上提供 Angular 代码,后端在端口 8080 上侦听。CORS 正在运行,因此我能够在构建代码时发送和接收请求。这可能与问题有关,也可能无关。

问题 是当使用 String 内容超过 21 个字符 的 DTO 响应时,值正在变得 'compressed.' 我在尝试使用收到的值 (UUID) 作为后续 GET 请求的键时注意到了这一点。检查 DTO class 我已经确认 toString() 方法确实调用了私有 compress 方法,它将接受任何长度超过 21 个字符和 return 的字符串类似于 this nine...last nine 的东西,这使得很难从 ... {"uuid":"95b90155-...ee5c02200", "name":"My Object"}...

重新获得 UUID

所以...给出这样的东西:

import org.osgi.dto.DTO;

public final class MyDTO extends DTO
{
   public String uuid;
   public String name;
}

和这样的 REST 应用程序:

@RequireBootstrapWebResource(resource="css/bootstrap.css")
@RequireWebserverExtender
@RequireConfigurerExtender
@Component(name="web", propery={"debug=true"})
public final class MyApplication implements REST
{
   private boolean debug = false;

   public MyDTO getMe(RESTRequest request)
   {
      MyDTO dto = new MyDTO();
      dto.name = "My Object";
      dto.uuid = UUID.randomUUID().toString();
      return dto;
   }

   @SuppressWarnings("unused")
   @Activate
   void activate(ComponentContext component, BundleContext bundle, 
                 Map<String, Object> config)
   {
      if ("true".equals(config.get("debug"))
      {
         debug = true;
      }
   }
}

为了在我的 JSON 回复中避免这个值 'compression' 我错过了什么?

我尝试过的东西

我写了 DTO.toString 方法。明确记录了未指定输出格式,它用作调试工具而不是用于序列化。这就是为什么 impl "compresses" strings.

如果需要序列化 ​​DTO,则需要为此目的使用代码。请参阅 https://github.com/osgi/osgi.enroute/blob/master/osgi.enroute.base.api/src/osgi/enroute/dto/api/DTOs.java 了解可以将 DTO 转换为 JSON 格式的 API。