2011-03-04 1 views
2

J'ai mis en place cette simple classe Java:JAX-RS et JSON foiré

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; 
    }   
} 

Maintenant, en utilisant JAX-RS J'instatiating et retourner cette classe comme JSON comme si;

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; 
    } 

} 

Ma classe d'initialisation de servlet est comme ceci:

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; 
    } 
} 

Le résultat que je reçois comme JSON est la suivante:

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

Comme vous pouvez voir la chaîne JSON est Java codé et je tire mes cheveux avec pourquoi ceci se produit et comment je peux surmonter ceci ...

L'aide serait apprécié ...

Répondre

2

Croyez-le ou non, votre résultat est bon. Ce n'est pas un code Java, c'est juste renvoyer les caractères non-ASCII comme des points de code Unicode (le \ u ...). Chargez ceci dans Javascript comme JSON est censé, et vous remarquerez qu'il l'imprime et le décode:

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