JAX-RS и JSON перепутались - PullRequest
2 голосов
/ 04 марта 2011

Я настроил этот простой класс 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;
    }

}

Мой класс инициализации сервлета выглядит так:

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, и я пытаюсь понять, почему это происходит, и как мне это преодолеть ...

Помощь будет оценена ...

1 Ответ

2 голосов
/ 05 октября 2011

Верьте или нет, ваш результат в порядке.Он не закодирован в Java, он просто возвращает не-ASCII символы в виде кодовых точек Юникода (\ u ...).Загрузите это в Javascript, как предполагается в JSON, и вы заметите, что он печатает и декодирует его:

    >>> p={"person":{"name":"t\u00e1\u00f2t","gender":"M","id":"1"}}
    >>> p.person.name
    "táòt"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...