这是一个使用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
答案 0 :(得分:3)
这是杰克逊的开发者(Tatu Saloranta / cowtowncoder)的一个引用,说明为什么这样简单的字符串处理。
这不是String被宣布为不可触摸的原因。相反,选择是 之间:
将输入字符串写为JSON字符串,即用双引号括起来 并逃避必要的角色,或
完全按原样写字符串,假设用户想要产生完全相同的字符串 输出(可能是手工编码的JSON)。
由于没有元数据来说明用户的意图是什么,杰克逊是 保守并使用后者选择。 考虑到JSON规范只考虑,这也是谨慎的 JSON对象和JSON数组作为有效的JSON内容 - 严格来说, 无论如何,返回JSON字符串都会产生无效的JSON。
“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类对象