当前位置: 首页 > 知识库问答 >
问题:

Spring-将字符串或JSONObject返回到JSONP

连翰
2023-03-14

我能够毫无问题地从一个定制的java对象返回一个jsonp(如下所示:http://www . concrete page . com/spring-4/spring-4-MVC-JSONP-example-with-rest-response body-response entity),但是当我试图在JSONP中返回一个字符串时,包装函数消失了

我正在做的事情:

  @RequestMapping(value ="/book", produces = {MediaType.APPLICATION_JSON_VALUE, "application/javascript"})
  public @ResponseBody ResponseEntity<String> bookInfo() {
    JSONObject test = new JSONObject();
    test.put("uno", "uno");
    return new ResponseEntity<String>(test.toString(), HttpStatus.OK);
}   

呼叫服务:

http://<server>:port//book?callback=test

退货:

{"uno":"uno"}

预期结果:

test({"uno":"uno"})

还尝试直接返回JSON object < code > response entity . accepted()。正文(测试);但是我得到了一个406错误。有什么想法吗?

共有1个答案

袁玮
2023-03-14

该错误看起来像是该示例中的类< code > jsonadvice 不可用于请求映射。

@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
    public JsonpAdvice() {
        super("callback");
    }
}

我使用了HashMap,因为它在这里有类似的用法,而且在这个例子中使用HashMap更简单:

@RequestMapping(value="/book", produces=MediaType.APPLICATION_JSON)
public ResponseEntity<Map> bookInfo() {
    Map test = new HashMap();
    test.put("uno", "uno");
    return ResponseEntity.accepted().body(test);
} 

这给我提供了结果:

// http://localhost:8080/book?callback=test

/**/test({
  "uno": "uno"
});

我使用的是Spring Boot子:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.1.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0</version>
    </dependency>
</dependencies>
 类似资料:
  • 我正在开发一个使用JSON进行服务器通信的Android应用程序,当我试图解析我的json文件时,我遇到了一个奇怪的问题。 这是来自服务器的json 我通过调用字符串City=address来获取City的值。我的地址Json对象上的optString(“city”,“”)。对于这种情况,我希望城市是空的(这就是optString在这里的目的,不是吗?)但实际上它包含字符串“null”。因此,进一

  • 我有一个Spring MVC控制器,方法如下: 它位于一个开始如下所示的控制器内部: 我使用的是Spring WebMVC 4.1.3和Jackson 2.4.3。我尝试在RequestMapping中添加一个“produces”属性,表示它应该返回JSON。在本例中,发回的Content-Type属性是“application/json”,但仍然没有引用测试字符串。 我可以通过调用JSON库将J

  • 我希望自动将对象序列化为JSON的便利性和返回原始JSON字符串的能力。我正在使用Gson而不是Jackson,因为Gson已经在我的应用程序中有一段时间了,我有现有的调整,转换器,和注释遍布我的应用程序。 我可以自动序列化POJO的: 我希望这也能奏效: 现在的结果是一个转义值: 而不是:

  • GETRANGE key start end 返回key 中字符串值的子字符串,字符串的截取范围由start 和end 两个偏移量决定(包括start 和end 在内)。可以使用负值,字符串右面下标是从-1开始的。 注意返回值处理: 1: start>=length, 则返回空字符串 2: stop>=length,则截取至字符结尾 3: 如果start 所处位置在stop右边, 返回空字符串

  • 本文向大家介绍C#枚举到字符串并返回,包括了C#枚举到字符串并返回的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我正在使用将Json从Web获取到字符串中。 这可能很简单,但我似乎无法将此字符串转换为。 我该怎么做?