【问题标题】:JAX-RS and JSON messed upJAX-RS 和 JSON 搞砸了
【发布时间】:2011-03-04 10:26:17
【问题描述】:

我已经设置了这个简单的 Java 类:

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 实例化并返回;

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初始化类是这样的:

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 结果是这样的:

{"person":{"name":"t\u00e1\u00f2t","gender":"M","id":"1"}}

如您所见,JSON 字符串是 Java 编码的,我很想知道为什么会发生这种情况以及如何克服这个问题...

我们将不胜感激...

【问题讨论】:

    标签: java json rest encoding


    【解决方案1】:

    信不信由你,你的结果很好。它不是 Java 编码的,它只是将非 ASCII 字符作为 unicode 代码点(\u...)返回。像 JSON 一样将它加载到 Javascript 中,你会注意到它会打印和解码它:

        >>> p={"person":{"name":"t\u00e1\u00f2t","gender":"M","id":"1"}}
        >>> p.person.name
        "táòt"
    

    【讨论】:

      猜你喜欢
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2012-04-14
      • 1970-01-01
      相关资源
      最近更新 更多