有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Jersey Restful webservice上输出JSON格式

我已经在我的应用程序中添加了一个Jersey库以及一个媒体JSON库,您可以在这里看到:

    <?xml version="1.0" encoding="UTF-8"?>
<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>click-digital-backend</groupId>
    <artifactId>ClickDigitalBackend</artifactId>
    <version>1.0-SNAPSHOT</version>



    <dependencies>



        <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>



        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-jackson</artifactId>
            <scope>runtime</scope>
            <version>2.22.1</version>
        </dependency>





    </dependencies>



</project>

这里我有一个简单的测试方法,可以将列表作为JSON返回:

import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.List;

@Path("/devmanager")
public class DeviceManager implements DevManager {
@GET
@Produces({MediaType.APPLICATION_JSON})
public MyList getString(){
    List<String> al = new ArrayList();
    al.add ("Hello");
    al.add ("World");
    MyList list = new MyList (al);

    return list;
}

@Path("/string")
@GET
@Produces(MediaType.APPLICATION_JSON)
public String getS(){
    return "Hallo";
}

以及:

package devicemanager;

import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;

@XmlRootElement(name = "MyList")
public class MyList {

    List<String> userList;

    public MyList (List<String> lst)
    {
        this.userList = lst;
    }

    //setters and getters goes here
}

现在我正在运行glassfish服务器v.4.1.1,但我在浏览器和日志中发现一个500错误,上面写着:

[2018-01-07T16:51:38.646+0100] [glassfish 4.1] [SEVERE] [] [org.glassfish.jersey.message.internal.WriterInterceptorExecutor] [tid: _ThreadID=34 _ThreadName=http-listener-1(4)] [timeMillis: 1515340298646] [levelValue: 1000] [[
  MessageBodyWriter not found for media type=application/json, type=class devicemanager.MyList, genericType=class devicemanager.MyList.]]

我已经搜索了几个小时的解决方案,并试图包括许多不同的库,应该做这个JSON格式,但我没有找到一个解决方案。即使我请求XML格式,我也会遇到同样的错误。 如果有人能帮我找到问题那就太好了


共 (0) 个答案