首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swagger返回响应:"can't parse JSON. Raw result:“

Swagger返回响应:"can't parse JSON. Raw result:“
EN

Stack Overflow用户
提问于 2019-07-11 03:46:44
回答 4查看 5.1K关注 0票数 1

我不确定为什么会发生这种情况。我对spring boot rest控制器的返回语句如下所示

代码语言:javascript
运行
复制
return ResponseEntity.status(HttpStatus.OK).body("Successfully added");

现在在swagger UI上,我看到如下响应

代码语言:javascript
运行
复制
can't parse JSON.  Raw result:

Successfully added

为什么会发生这种情况?

EN

回答 4

Stack Overflow用户

发布于 2020-05-21 08:52:03

这个游戏很晚了,但我会分享我对这个问题的解决方案,因为它是我最近开发的一个基于Python Flask的REST后端。如果您的问题与我的类似,那么您可以在您的JSON中包含Python值,尽管是在NaN中。

我的基本问题

我也得到了“无法解析JSON”的夸张的一面。事实证明,Python的标准库JSON导入将允许“现代的”但不是官方的json类型,例如"NaN“。用浮点数和voila...As做一些计算,一个严格的解析器在NaN这样的类型下会失败,值得检查一下你的请求JSON响应中没有这些。

用一个编码器类解决了这个问题

虽然不是特定于Java的答案,但也许我的Python解决方案可以帮助您解决这个问题。

代码语言:javascript
运行
复制
json.dumps(yourdata, cls=NumpyEncoder)

其中NumpyEncoder是将JSON值转换为NaN和/或您可接受的规范的类。可能的情况是,您也可以在代码中包含一些编码器类来删除NaN和/或其他工件。

有关Python实现的详细信息,请参阅我的so answer

票数 1
EN

Stack Overflow用户

发布于 2019-07-11 03:49:39

如果没有看到更多的代码和实际的Swagger JSON,很难说,但JSON似乎有一个语法问题。通过JSON验证器运行它以进行确认。如果你在谷歌上搜索一下,有很多这样的网站。

票数 0
EN

Stack Overflow用户

发布于 2021-06-27 15:07:20

这是因为您返回的是字符串文字,而不是JSON对象。我假设您的返回类型应该是RepsonseEntity<String>,但这不会起作用,您需要在主体中指定一个对象。您可以创建一个POJO来为您保存消息,如下所示:

代码语言:javascript
运行
复制
public class YourResponseClass {
    private String message;
    //Constructors, getter and setter
}

然后在返回时,您需要将返回类型更改为RepsonseEntity<YourResponseClass>,然后返回您的响应:

代码语言:javascript
运行
复制
return ResponseEntity.ok(new YourResponseClass("Successfully Added."));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56977658

复制
相关文章

相似问题

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