问题标签 [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.
java - 没有调用 Spring JSON 序列化器和反序列化器
我已经为 com.google.common.collect.Table 类编写了自定义序列化器和反序列化器。但是在 MongoDB 中保留该对象时不会调用它。我正在使用 Spring 4、Spring-MongoDB 1.9 和 Jackson 2.8.4。下面是类和配置。你能否让我知道这有什么问题。我希望在从 MongoDB 持久化和检索时调用这些类。
弹簧配置
课堂注解
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,
我可以知道这里出了什么问题吗?我什至也试过这个。相同的错误行为。
谢谢。
java - 替代已弃用的方法 ObjectMapper.setFilters()
我有以下代码部分可以帮助我掩盖 json 响应的某些属性,
ObjectMapper 映射器 = 新 ObjectMapper(); mapper.setFilters(new SimpleFilterProvider().addFilter("sampleFilter", new SampleFilter()) .addFilter("simpleFilter",new SimpleFilter()));
但我意识到 setFilters() 方法已被弃用......我想用另一种方法替换它。非常感谢任何帮助!
java - Spring 和 Gson - 仅在特定条件下公开字段
我正在使用带有 Gson 的 Spring 进行对象序列化。
我有使用@Expose
注释的模型对象,例如:
我有 2 个控制器,它们为Zone
用户提供对象列表,例如:
问题是List<String> longList
var - 它通常有很多条目(String
仅作为示例,在代码中它可能是复杂对象)。
在我的getFullZones()
我想用这个服务于用户区域,longList
但在getSimpleZones()
我想不提供服务区域longList
(它在客户端没有以任何方式使用)。
怎么做?
我可以使用区域迭代列表并将其设置longList
为 null,但这不是非常优雅的解决方案。
我正在设置Spring
这样使用Gson
:
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?
编辑:经过一些调试,我可能发现了问题。现在,如果我将返回类型从long
tostring
或 void 更改,它不会给我 406。数字数据类型都不起作用。试过了int
,double
。
我已经设置了produces = "text/plain"
。现在问题变成了如何long
在 rest API 中返回?
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 一起使用。
spring - 在 Spring 4.3.3 WebMVC 中覆盖 @RestController 中的 JSON 属性
我想在 WebMVC 中覆盖 Spring RestController 中的以下属性。
我在多种组合中尝试了以下方法,但没有任何效果。仍然在响应中获得没有根名称的空值。
回应:
java - Java Spring web - 使用验证器将子属性转换为对象
我正在使用带有控制器服务模型和验证的 spring web。我有一个 Color 对象和一个 Color 服务。
在我的一个控制器中,我正在接受一个对象:
如您所见,eventColor
子属性的类型为Color
. 但是,我希望发件人能够只发送颜色名称(颜色不多,而且它们无论如何都缓存在内存中)。
我知道我可以使用字符串类型的颜色和验证器来确保颜色存在,但是有没有办法将它转换为颜色?
spring-boot - 多对多关系中的json无限递归
当我使用多对多关系时,它会在 json 中无限循环,所以我使用了 @JsonBackReference 和 @JsonManagedReference 但它返回如下
当我搜索 /api/peoples
当搜索 /api/banks 时,它只会返回银行而不是人民
]
请帮助解决如何像第一个一样在 /api/banks 中返回人
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 的转换(也使用拆分器)。