JAX-RS和JSON搞砸了 [英] JAX-RS and JSON messed up

查看:132
本文介绍了JAX-RS和JSON搞砸了的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经设置了这个简单的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆