返回时灰熊服务器 500 响应 JSON

Grizzly Server 500 RESPONSE when returning JSON

我正在序列化一个字符串缓冲区,我正在将其进一步转换为 JSON 数组。请注意,我 100% 确定 JSON 数组有效。

现在,当我发送此 JSON 数组作为响应时,服务器 returns 500 请求失败。我确保将此 JSON 数组作为列表发送。

例如,字符串缓冲区现在已完全加载。

//Creating the JSONArray
JSONArray jsonArray = new JSONArray(stringBuffer.toString());
//Sending the response
return Response.status(200).entity(jsonArray.toList()).build();

我的 pom.xml

中有这些依赖项
    <dependency>
         <groupId>org.glassfish.jersey.containers</groupId>
         <artifactId>jersey-container-grizzly2-http</artifactId>
    </dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.8</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-jackson</artifactId>
        </dependency>

        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20160810</version>
        </dependency>

        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-server -->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.19</version>
        </dependency>

        <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>2.8.2</version>
        </dependency>
        <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.8.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.glassfish.grizzly/grizzly-http-server -->
        <dependency>
                <groupId>org.glassfish.grizzly</groupId>
                <artifactId>grizzly-http-server</artifactId>
                <version>2.3.29</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-common</artifactId>
            <version>2.22.2</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-moxy</artifactId>
        </dependency>

我在这里做错了什么?服务器也不打印任何堆栈跟踪。

好吧,我仍然不知道自己做错了什么。所以我完全停止创建 StringBuffer 并将 POJO 映射到 JsonObject。当您 return 一个 jsonobjects 列表时,如果您指定了 getter、setter 和构造函数,Grizzly 会自动将它们映射到一个 JSON 数组中。另外,请确保使用 @JsonProperty 注释。

参考范例:

public class Parameter {
  @JsonProperty("Name")
  public String name;
  @JsonProperty("Value")
  public String value; 
}

这正确解析了 to/from JSON:

"Parameter":{
  "Name":"Parameter-Name",
  "Value":"Parameter-Value"
}

代码取自:When is the @JsonProperty property used and what is it used for? 感谢您提供代码,@OldCurmudgeon :)