Java Jersey JSON服务没有返回引用的字符串?

时间:2017-10-03 00:33:25

标签: java json jersey

这是一个使用Jersey

编写的简单Web服务
@GET
@Produces(MediaType.APPLICATION_JSON)
public Object interpretationJson() {                        
    String o = "a simple string";       
    return o;
}

对此的回应是:

HTTP/1.1 200
Content-Type: application/json
Content-Length: 15
Date: Mon, 02 Oct 2017 23:18:14 GMT

a simple string

不应该引用响应正文中的字符串吗?我不相信这是有效的JSON。不应该回应:

HTTP/1.1 200
Content-Type: application/json
Content-Length: 15
Date: Mon, 02 Oct 2017 23:18:14 GMT

"a simple string"

这让我有些困惑。我原本以为问题是在客户端,但现在我认为问题是从Jersey返回的字符串是无效的JSON - C# Parsing json that may have simple types

2 个答案:

答案 0 :(得分:3)

这是杰克逊的开发者(Tatu Saloranta / cowtowncoder)的一个引用,说明为什么这样简单的字符串处理。

  

这不是String被宣布为不可触摸的原因。相反,选择是   之间:

     

将输入字符串写为JSON字符串,即用双引号括起来   并逃避必要的角色,或

     

完全按原样写字符串,假设用户想要产生完全相同的字符串   输出(可能是手工编码的JSON)。

     

由于没有元数据来说明用户的意图是什么,杰克逊是   保守并使用后者选择。   考虑到JSON规范只考虑,这也是谨慎的   JSON对象和JSON数组作为有效的JSON内容 - 严格来说,   无论如何,返回JSON字符串都会产生无效的JSON。

Referenced issue...

“Untouchable”是杰克逊的一个类型,将完全按原样返回。

如果您愿意,可以轻松返回带引号的字符串,并且有多种方法可以执行此操作。但我认为这不是你的问题。

答案 1 :(得分:-1)

public class TestGetterSetter{

private String name ;

public void setName(String name){
    this.name = name ;
}


public String getName(String name){
    return this.name ;
}}
  

使用此POJO类设置值并返回此POJO类对象