gpt4 book ai didi

java - OSGI Enroute DTO 中的字符串为 'compressed'

转载 作者:行者123 更新时间:2023-11-30 06:30:37 26 4
gpt4 key购买 nike

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

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

问题是,当使用 String 内容超过 21 个字符的 DTO 进行响应时,该值会被“压缩”。当我尝试使用收到的值(UUID)作为后续 GET 请求的 key 时,我注意到了这一点。检查 DTO 类,我已确认 toString() 方法确实调用了私有(private) compress 方法,该方法将采用任何长度超过 21 的字符串字符并返回类似于 this nine...last nine 的内容,这往往会使从 ... {"uuid"重新获取 UUID 变得困难:“95b90155-...ee5c02200”,“名称”:“我的对象”}...

所以......给出这样的事情:

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 响应中的值“压缩”,我缺少什么?

我尝试过的事情

  • (有效的)覆盖 DTO 提供的 toString() 方法。这可行,但似乎不是最好的解决方案。然后,对于字符串值可能超过 21 个字符的任何内容,我必须重写 toString()。文档表明目的是为了调试,这可能意味着我没有返回正确的类型?
  • 请求_response()内容类型设置为application/json:结果我在 Chrome Web 控制台中看到仍然是压缩字符串

最佳答案

我编写了 DTO.toString 方法。明确记录了输出的格式未指定,并且它用作调试工具而不是用于序列化。这就是 impl“压缩”字符串的原因。

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

关于java - OSGI Enroute DTO 中的字符串为 'compressed',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46228630/

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