JAX-RS和JSON搞砸了 [英] JAX-RS and JSON messed up
问题描述
我已经设置了这个简单的Java类:
I've Set up this simple Java Class:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Person {
private int id;
private String name;
private String gender;
public Person() {
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return this.id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getGender() {
return this.gender;
}
}
现在使用JAX-RS我打算返回这个类像JSON一样;
Now using JAX-RS I'm instatiating and returning this Class as JSON like so;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path(value="/addresses")
public class AddressBook extends Person {
public AddressBook() {
}
@GET
@Produces("application/json;charset=iso-8891-1")
public Person getList() {
Person p1 = new Person();
p1.setName("táòt");
p1.setId(1);
p1.setGender("M");
return p1;
}
}
我的servlet初始化类就像这样:
My servlet initialization class is like this:
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
public class AddressBookApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(AddressBook.class);
return classes;
}
}
我以JSON获得的结果是:
The result I'm getting as JSON is this:
{"person":{"name":"t\u00e1\u00f2t","gender":"M","id":"1"}}
正如你可以看到JSON字符串是Java编码我正在拉我的头发,为什么这是发生,我该如何克服这个...
As you can see the JSON string is Java encoded and I'm pulling my hair out with why this is happening and how can I overcome this...
帮助将不胜感激...
Help would be appreciated...
推荐答案
相信与否,你的结果很好。它不是Java编码的,它只是将非ASCII字符作为unicode代码点(\u ...)返回。将其加载到JavaScript中,如JSON所示,您会注意到它打印并解码:
Believe it or not, your result is fine. It's not Java encoded, it's just returning the non-ASCII characters as unicode codepoints (the \u...). Load this into Javascript like JSON is supposed to, and you'll notice it prints and decodes it:
>>> p={"person":{"name":"t\u00e1\u00f2t","gender":"M","id":"1"}}
>>> p.person.name
"táòt"
这篇关于JAX-RS和JSON搞砸了的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!