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

根据jersey respone中模型属性的类型绕过原始字符串?

郭乐湛
2023-03-14

我有一个模型类,其属性类型为“Object”。

class Model{
    private Object data;
    ......
}

当我返回响应时:

return Response.ok(modelObject).build();

如果“data”是字符串类型,我希望将其作为原始字符串绕过,以避免引号转义,因为它是JSON格式。我发现@JsonRawValue完成了这项工作。但是,如果“数据”是字符串以外的某个对象,它将以纯文本格式生成整个响应。(返回类型为MediaType.APPLICATION\u JSON)

我的要求是仅当数据为字符串类型时才应用注释,否则不应用。是否有办法实现这一点,或者是否有其他解决方案

共有1个答案

巴宏恺
2023-03-14

普通字符串不是JSON,因此在本例中,您的响应应该是text/plain,而不是application/JSON

在@products中添加TEXT_PLAIN

@Produces({MediaType.APPLICATION_JSON,MediaType.TEXT_PLAIN})
public Response myService()

并根据响应内容设置媒体类型

return Response.ok(modelObject).type(MediaType.APPLICATION_JSON).build();

return Response.ok(plainString).type(MediaType.TEXT_PLAIN).build();
 类似资料:
  • 我引用Herbert Schildt第3章数据类型、变量和数组: 基元类型表示单个值,而不是复杂的对象。虽然Java在其他方面是完全面向对象的,但基元类型不是。这种效率的原因。制作基元类型会使性能降低太多。 基元类型被定义为具有显式范围和数学行为。像C、C++这样的语言允许整数的大小根据执行环境的指令而变化。然而,Java不同。由于Java的可移植性要求,所有数据类型都有一个强定义的范围。例如,i

  • 问题内容: 我正在尝试确定对象上字段的类型。当对象传递给我时,我不知道对象的类型,但我需要查找为s的字段。区分框s 很容易,但是原始图元似乎更加困难。 我 可以 确保传递给我的对象只有,没有基元,但我宁愿没有。所以我有: 一种似乎可行的hacky方法是: 如果有的话,我真的很希望有一种更清洁的方法。如果没有更好的方法,那么我认为要求我接收的对象仅使用(not )将是更好的API。 有任何想法吗?

  • 我试着搜索像Multi-raw类型的东西,但我没有找到任何东西。 我该怎么做?

  • 问题内容: 我是Kotlin的新手,正在玩数据类型。我选择了一个类型,然后尝试通过说来将其强制转换为a ,这在Java中是有效的(从语法上讲,但这是正确的)。但是,此操作失败,表示无法将Int强制转换为Double。我假设这是因为它是基于Integer类而不是原始的int数据类型构建的。我是正确的,最有价值的方法是什么?有一个功能,但这似乎效率低下且笨拙。 问题答案: 我花了一个类型,然后试图将它

  • 问题内容: 考虑以下方法: 和 这两种方法有什么区别?如果没有差异,为什么要使用第二个? 问题答案: 不允许您在列表中添加对象。请参阅下面的程序。这是我们传递给method的特定列表类型。 特定方式,列表是使用特定类型创建的,并传递给method 。不要与 单词 混淆。 具体可以是任何普通对象,例如Dog,Tiger,String,Object,HashMap,File,Integer,Long