2017-04-11 103 views
0

我有一个休息服务,它返回Dto的一个字段列表中的DTO是本地化的,并被翻译成一些国家,问题是当我在肥皂UI中测试它时,我看到特殊字符编码自KjøregodtgjørelseKjøregodtgjørelse这里的代码片段:JAVA Rest服务JSON编码

@Path("user") 
@RequestScoped 
@RolesAllowed(Roles.REGULAR_USER) 
public class UserTravelRest extends RESTEndpoint<UserTravelService > { 

    @EJB 
    private UserTravelService service; 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Path("travel") 
    public List<TravelsDTO> getTravels() throws GeneralException { 
     return service.getTravelsForUser(); 
    } 

所以它只是一个简单的GET返回DTO列表,它看起来像这样:

@Getter 
@Setter 
@NoArgsConstructor 
@AllArgsConstructor 
@XmlRootElement 
public class TravelsDTO implements Serializable { 
    private static final long serialVersionUID = 1L; 
    private Long id; 
    private BigDecimal amount; 
    private String displayName; 
} 

显示名是被编码的领域。 我应该添加一些unescaping之前返回列表休息服务或其他?

+0

可我知道肥皂UI使用的是 –

+0

版本是5.3 .0 – Dadonis

+0

确保SoapUI使用[这里]提到的UTF-8(https://community.smartbear.com/t5/SoapUI-NG/How-to-change-default-encoding-to-UTF-8-for -entire应用/ TD-p/122935)。 –

回答

0

你必须更明确一些文本编码:

@Produces("application/json; charset=UTF-8") 
0

有可能是与你的客户的问题。

当写响应,实现应该尊重应用程序提供的字符集的元数据,并且如果一个字符集是应该使用UTF-8:根据JSR 339,UTF-8应当被默认如果没有指定其他字符集用未由应用程序指定,或者应用程序指定了不受支持的字符集。

diginoise's answer已经提到,以确保您的资源的方法是生产UTF-8编码的数据,你可以使用:

@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")