objectmapper 有类似于jsonobject.put一样的api吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了objectmapper 有类似于jsonobject.put一样的api吗相关的知识,希望对你有一定的参考价值。
参考技术A :可能要引几个包; JSONObject jsonObject = new JSONObject(); jsonObject.put("ret", 0); jsonObject.put("msg", "ok"); jsonObject.put("date", "data"); System.out.println(jsonObject.toString());//你可以打印看一下 参考技术B set up look down upon look after cut up cut down cut off是否可以为单个 Spring Rest 端点自定义 ObjectMapper?
【中文标题】是否可以为单个 Spring Rest 端点自定义 ObjectMapper?【英文标题】:Is it possible to customize ObjectMapper for single Spring Rest endpoint? 【发布时间】:2021-08-14 02:57:06 【问题描述】:我知道如何自定义默认的ObjectMapper
bean。但是对于一个特定的控制器/端点,我想使用不同的对象映射器。我该怎么做?
我认为我的问题与one 类似,但还没有答案。很高兴在那里得到答案并将其标记为重复
【问题讨论】:
我试着想出an answer! xDxD(10 年后)..虽然旧问题的答案是“否”,但我认为您的答案是“可能”! :) 如果您可以通过 (java, media)"type" (在 spring-data-rest 中为“正常”)来构建您的端点,您可以拥有自定义的 objectmapper “per endpoint”。 这很聪明,不知道你能做到。我赞成你的回答。但是,出于我的目的,返回的对象是Map<String,Object>
,我不知道更改媒体类型。我没有提到这是针对 graphql 端点的。
我最终使用自定义对象映射器将对象写入字符串并将返回类型更改为字符串
感谢您的支持! (我认为它也适用于Map
,但不适用于泛型类型<String, Object>
..我将我的想法发布为答案..很快;)
我明白你了,凯恩! :) 您在 github 操场上可以做的事情可能不适用于“现实世界”! ...发布您的解决方案!这是一个“不错的黑客”!
【参考方案1】:
@xerx593 在问题的 cmets 中提供了一个很好的解决方案,但我采用了不同的方法,因为我返回的是通用的 Map<String,Object>
graphql 返回类型,我对更改媒体类型或应用所有Map
的对象映射器。我更喜欢他们针对一般情况的解决方案,因为它更优雅
我只是将返回对象序列化为字符串并返回。
比如我翻了这样的东西
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public Foo getFoo()
return new Foo();
这样的事情
private ObjectMapper customMapper = ...;
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public String getFoo()
return customMapper.writeValueAsString(new Foo());
【讨论】:
以上是关于objectmapper 有类似于jsonobject.put一样的api吗的主要内容,如果未能解决你的问题,请参考以下文章
是否可以让Jackson ObjectMapper在Spring Boot应用程序中遵守JAXB XML注释?
json转字符串 —— jsonObj.toJSONString()与JSON.stringify(jsonObj)
无法使用 Jackson ObjectMapper 将 Json 序列化为 Java 对象