首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spring中使用org.json

在Spring中使用org.json
EN

Stack Overflow用户
提问于 2022-05-09 14:50:33
回答 1查看 587关注 0票数 0

我正在使用Spring框架,并试图创建一个结构,开发人员只能返回org.json.JSONObject实例。我有这个端点声明。

代码语言:javascript
复制
    @RequestMapping(path = "/hello", method = RequestMethod.POST)
    @ResponseBody
    public org.json.JSONObject hello(HttpServletRequest request, HttpServletResponse response) throws IOException

这总是返回{"empty":false},因为框架使用的Jackson不知道如何序列化org.json实例。我试图告诉杰克逊如何使用以下依赖项序列化org.json实例。

代码语言:javascript
复制
    <dependency>
      <groupId>com.fasterxml.jackson.datatype</groupId>
      <artifactId>jackson-datatype-json-org</artifactId>
      <version>2.13.0</version>
    </dependency>

但是,除非我将返回类型更改为Map值,否则无法工作。使用

代码语言:javascript
复制
    ObjectMapper mapper = JsonMapper.builder()
        .addModule(new JsonOrgModule())
        .build()

帮不上忙。是否有一个由Spring使用的全局ObjectMapper对象,可以在应用程序启动时注册JsonOrgModule?如何使用Spring框架使用org.json.JSONObject返回类型。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-05-09 15:45:35

根据SpringBootdocs4.3自定义Jackson ObjectMapper部分

com.fasterxml.jackson.databind.Module类型的任何bean都会自动在自动配置的Jackson2ObjectMapperBuilder中注册,并应用于它创建的任何ObjectMapper实例。这提供了在向应用程序添加新功能时提供自定义模块的全局机制。

因此,如果您提供了一个类型为@BeanJsonOrgModule,它将自动应用于在启动时创建的默认ObjectMapper

特别代表:

代码语言:javascript
复制
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public JsonOrgModule jsonOrgModule() {
        return new JsonOrgModule();
    }

}

@SpringBootTest
class ObjectMapperTests {

    @Autowired
    ObjectMapper defaultObjectMapper;

    @Test
    void defaultObjectMapperShouldWriteJsonObject() throws JSONException, JsonProcessingException {
        // Given
        var jsonObject = new JSONObject().put("username", "eHayik");

        // When
       var json = defaultObjectMapper.writeValueAsString(jsonObject);

       // Then
       assertThat(json).isEqualTo("{\"username\":\"eHayik\"}");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72173968

复制
相关文章

相似问题

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