问题标签 [spring-json]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
936 浏览

java - 没有调用 Spring JSON 序列化器和反序列化器

我已经为 com.google.common.collect.Table 类编写了自定义序列化器和反序列化器。但是在 MongoDB 中保留该对象时不会调用它。我正在使用 Spring 4、Spring-MongoDB 1.9 和 Jackson 2.8.4。下面是类和配置。你能否让我知道这有什么问题。我希望在从 MongoDB 持久化和检索时调用这些类。

弹簧配置

课堂注解

0 投票
1 回答
1171 浏览

json - 带有json路径表达式的Spring集成转换错误

我的 spring 集成正在尝试从输入通道转换 JSON 消息,并通过提供相应的键从 JSON 消息中提取值。它抛出 SpelEvaluationException。

Spring集成配置

错误信息

原因:org.springframework.messaging.MessageHandlingException:表达式评估失败:#jsonPath(payload, '$.[0].EVENTNAME'); 嵌套异常是org.springframework.expression.spel.SpelEvaluationException:EL1022E:函数'jsonPath'映射到无法调用的'class org.springframework.expression.TypedValue'类型的对象,failedMessage = GenericMessage [payload = [{“ EVENTID":5064015,"EVENTNAME":"Account","EVENTID":"15590","APPLICATIONID":1,"CREATEDTIMESTAMP":1493929367000,"TRANSACTIONID":"100.2.33"}], headers={json__ContentTypeId__=类 org.springframework.util.LinkedCaseInsensitiveMap,id=acbc053a-b466-fbb9-8d3d-f60c78371b3e,json__TypeId__=class java.util.ArrayList,contentType=application/json,

我可以知道这里出了什么问题吗?我什至也试过这个。相同的错误行为。

谢谢。

0 投票
1 回答
1142 浏览

java - 替代已弃用的方法 ObjectMapper.setFilters()

我有以下代码部分可以帮助我掩盖 json 响应的某些属性,

ObjectMapper 映射器 = 新 ObjectMapper(); mapper.setFilters(new SimpleFilterProvider().addFilter("sampleFilter", new SampleFilter()) .addFilter("simpleFilter",new SimpleFilter()));

但我意识到 setFilters() 方法已被弃用......我想用另一种方法替换它。非常感谢任何帮助!

0 投票
1 回答
828 浏览

java - Spring 和 Gson - 仅在特定条件下公开字段

我正在使用带有 Gson 的 Spring 进行对象序列化。

我有使用@Expose注释的模型对象,例如:

我有 2 个控制器,它们为Zone用户提供对象列表,例如:

问题是List<String> longListvar - 它通常有很多条目(String仅作为示例,在代码中它可能是复杂对象)。

在我的getFullZones()我想用这个服务于用户区域,longList但在getSimpleZones()我想不提供服务区域longList(它在客户端没有以任何方式使用)。

怎么做?

我可以使用区域迭代列表并将其设置longList为 null,但这不是非常优雅的解决方案。

我正在设置Spring这样使用Gson

0 投票
0 回答
127 浏览

json - 为什么我得到返回“long”的 406 调用 API

我正在使用 Spring Boot 和 JPA 开发 REST api。其中一个端点使用 JSON。

我简化了这个 api 中的逻辑只是为了调试。

实体类 DoorController 如下所示: public class DoorController implements Serializable {

然后我启动了应用程序并使用 Swagger-ui 测试了端点。请求正文是以下 JSON:

我做了一些研究,似乎对于较旧的 Spring,您需要显式添加jackson依赖项。但是对于当前的 Spring Boot,它已经包含在内。

服务器端没有错误。当我调试它并在控制器类中放置一个断点时return 10;,在单步执行此语句后,它将重定向到sun.reflect.NativeMethodAccessorImpl类文件编辑器并显示source not found. 这是什么意思,为什么我仍然得到 406?

编辑:经过一些调试,我可能发现了问题。现在,如果我将返回类型从longtostring或 void 更改,它不会给我 406。数字数据类型都不起作用。试过了intdouble

我已经设置了produces = "text/plain"。现在问题变成了如何long在 rest API 中返回?

0 投票
1 回答
1517 浏览

java - Java Spring Data JPA 和 REST API:排除嵌套 JSON 对象的字段

目前,我正在将 Spring Data JPA 2.2.1 与 Spring Boot Web 2.2.1 一起用于 REST API 服务。

对/categories的 getter 调用会返回以下 JSON,这实际上是所需的结果:

实体:

控制器:

存储库

数据服务

我现在想向我的 API 添加一个新调用/limitedCategories,它不会返回所有字段。例如,应排除父实体的“category2”和嵌套实体的“field4”。

问题:

  • 我无法在我的 JPA 存储库中手动选择所需的字段,也不知道如何处理嵌套对象。
  • 仅使用 findAll 并使用 @JsonIgnore 排除这些字段的简单想法是不可能的,因为我的第一个请求仍然需要这些字段。
  • 在我的存储库中使用 @Query 注释仅获取所需字段时,我找不到为我的 JSON 获取嵌套字段的方法。

提前致谢。

我将 Spring Data JPA 2.2.1 与 Spring Boot Web 2.2.1 一起使用。

0 投票
1 回答
121 浏览

spring - 在 Spring 4.3.3 WebMVC 中覆盖 @RestController 中的 JSON 属性

我想在 WebMVC 中覆盖 Spring RestController 中的以下属性。

我在多种组合中尝试了以下方法,但没有任何效果。仍然在响应中获得没有根名称的空值。

回应:

0 投票
2 回答
101 浏览

java - Java Spring web - 使用验证器将子属性转换为对象

我正在使用带有控制器服务模型和验证的 spring web。我有一个 Color 对象和一个 Color 服务。

在我的一个控制器中,我正在接受一个对象:

如您所见,eventColor子属性的类型为Color. 但是,我希望发件人能够只发送颜色名称(颜色不多,而且它们无论如何都缓存在内存中)。

我知道我可以使用字符串类型的颜色和验证器来确保颜色存在,但是有没有办法将它转换为颜色?

0 投票
1 回答
35 浏览

spring-boot - 多对多关系中的json无限递归

当我使用多对多关系时,它会在 json 中无限循环,所以我使用了 @JsonBackReference 和 @JsonManagedReference 但它返回如下

当我搜索 /api/peoples

当搜索 /api/banks 时,它只会返回银行而不是人民

]

请帮助解决如何像第一个一样在 /api/banks 中返回人

0 投票
1 回答
162 浏览

json - JSON作为Spring集成中的字符串

我使用 aint:gateway 将 json String 引入到int:channel. <int-stream:stdout-channel-adapter/>当我使用(或者即使我在附加到的服务激活器中打印它)打印这个json字符串时,int:channel它正在打印键/值对=而不是: 例如->GenericMessage [payload={id=1596096, key=SOME_KEY, address={first_name=John, last_name=...... 为了解决这个问题,我必须使用<int:object-to-json-transformer />

使用原始 JSON 的最佳方式是什么?我的用例是进行 JSON 到 JSON 的转换(也使用拆分器)。