首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结果的JSON格式不正确

结果的JSON格式不正确
EN

Stack Overflow用户
提问于 2018-02-24 18:34:08
回答 2查看 136关注 0票数 0

我已经开发了运行良好的RESTful web服务,我已经使用了一个POJO和一个服务类,如下所示,但问题是在输出中显示额外的$请建议如何更正现在的输出为

代码语言:javascript
复制
{
   "student":{
      "@id":"10",
      "age":{
         "$":"25"
      },
      "collegeName":{
         "$":"UP College"
      },
      "name":{
         "$":"Ram"
      }
   }
}

我希望输出结果应该是

代码语言:javascript
复制
{
   "student":{
      "@id":"10",
      "age":25,
      "collegeName":"UP College",
      "name":"Ram"
   }
}

下面是我的POJO

代码语言:javascript
复制
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement(name = "student")
public class Student {

    private int id;
    private String name;
    private String collegeName;
    private int age;

    @XmlAttribute
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @XmlElement
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @XmlElement
    public String getCollegeName() {
        return collegeName;
    }

    public void setCollegeName(String collegeName) {
        this.collegeName = collegeName;
    }

    public int getAge() {
        return age;
    }

    @XmlElement
    public void setAge(int age) {
        this.age = age;
    }

}

下面是我的服务类

代码语言:javascript
复制
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import org.jboss.resteasy.annotations.providers.jaxb.json.BadgerFish;


@Path("/restwb") 
public class StudentService {

    @BadgerFish
    @GET
    //@Path("/{id}")
    @Produces("application/json")
    public Student getStudentDetails(){
        Student student = new Student();
        student.setId(10);
        student.setName("Ram");
        student.setCollegeName("UP College");
        student.setAge(25);
        return student;
    }

}

这是我的pom.xml

代码语言:javascript
复制
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.concretepage</groupId>
<artifactId>RestWB</artifactId>
<version>1</version>
<packaging>war</packaging>

<dependencies>
     <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>3.0.4.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <version>3.0.4.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jettison-provider</artifactId>
        <version>3.0.4.Final</version>
    </dependency>
</dependencies>      
</project>
EN

回答 2

Stack Overflow用户

发布于 2018-02-24 18:43:53

是的,这是Badgerfish的documented behaviour

元素的

文本内容放在对象的$属性中。

从文档中看,没有明显的方法可以转换为没有@的对象属性。(如果你对@age很满意,你可以用XmlAttribute代替XmlElement。)

但是,由于您似乎根本不需要XML表示,所以我建议您不要使用Badgerfish作为JSON表示,因为Badgerfish明确表示为从XML文档到JSON文档的转换。

票数 2
EN

Stack Overflow用户

发布于 2018-02-24 18:44:34

你得到的格式就是你给出的Badgerfish。没有办法改变它。要么完全删除Badgerfish并获得方便的JSON,要么使用这个库的工作成果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48961839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档