问题标签 [json-view]
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.
angular - 在 matDailog (Angular 9+) 中注入后在 json 视图中显示数据
我需要在MatDialog内的 JSON 视图中显示数据。我正在使用 API 来获取一些数据,然后data
使用MatDialog
. 数据已成功注入,也可在对话框组件中访问。我正在使用ngx-json-viewer 包在 JSON 视图中显示此数据,但它不起作用。这是我打开对话框并将数据传递给它的方式-
这是我在模板页面上使用的 -
json-view - 如何将 JsonView 应用于嵌套实体
我定义了以下 JsonViews:
然后我有这些课程:
我这样返回我的客户列表:
虽然我希望使用详细视图对客户实例进行序列化,但我希望使用缩写视图对嵌套的发票实例进行序列化。同样,当我使用详细视图序列化发票列表时,我希望使用缩写视图序列化嵌套的客户实例。这不仅仅是递归问题,因为我还想删除许多其他属性。
我已经到处搜索了解决方案,但也许我没有使用正确的关键字。
我的前任使用@JsonIgnoreProperties 完成了这项工作,但事实证明这是一个维护问题。当一个新属性被添加到一个类中时,我必须寻找所有的忽略列表并决定是否需要忽略它。如果有相应的@JsonIncludeProperties 会更容易。
有没有人找到更好的方法来实现这一点?
spring - 控制器方法中的条件@JsonView
我有一个用@JsonView
. JsonView
当前的要求是,如果userId
给定的 in 参数与经过身份验证的用户匹配,则使用不同的方法返回响应。知道响应类型应该保留ResponseEntity<MyObject>
而不应该更改为MappingJacksonValue
或排序,如何实现这一点。
我正在使用 Spring,所以也许一种方法是JacksonMapper
注入默认值并SerializationView
根据方法中的条件更改它。但这里的问题是,注入什么以及如何实现这一目标?
json - @JsonView 不适用于继承
我在简单的类(没有继承)上使用@JsonView ,它工作正常。
但我还有另一种情况:B、C、D 类继承 A,A 类继承 T。 我将@JsonView放在正确的 get 方法中,但过滤器不起作用我总是在 Json Body 响应中获取所有属性。
我应该在继承情况下添加特定配置吗?
我使用了以下教程:
https://www.baeldung.com/jackson-json-view-annotation
Ps:我也在控制器方法上添加了@JsonView。 @JsonView(DeliveryPrdViews.History.class)
我错过了什么吗?
氪,
java - JsonIgnore 除了一个端点
我正在使用 Spring Boot 开发应用程序,我只想在返回客户端时忽略一个字段,但一个端点除外。
如何仅为一个端点向客户端公开 jwt?谢谢
java - 当我有内部变量的吸气剂时,Jackson @JsonView 不起作用
我有这两个课程Human
,User
它们看起来像:
我有一个返回的控制器Human
。
我有这个用于 JsonView 的课程:
这里的问题是,我期待的是得到没有“性”属性的响应,因为它没有用@JsonView
. 所以响应不应该包含它,但事实并非如此,因为我仍然看到它。
我注意到,如果我删除getSex()
getter,那么“sex”属性将从响应中消失,所以我可以说@JsonView
有效。
但不幸的是,我无法摆脱吸气剂。
然后我了解到@JsonView()
使用反射来访问私有和受保护的属性。删除 getter 后,Jackson 不知道如何序列化/反序列化属性,因此没有 getter@JsonView()
将正常工作,因为它无法访问属性,并且只有带有注释的那些@JsonView()
才会在序列化中考虑。
我的问题是,如何在@JsonView()
不移除 getter 的情况下使这个“性”属性从响应中消失(使工作正常)?
json - JSON 不重复某些属性和各自的值
对于同一模型类的第二次序列化的所有实例,对象仅具有它们应该具有的一部分属性及其各自的值。这样,JSON 文件结构就不像应用程序的旧部分(前端)所期望的那样同质化和统一。
在上面的 JSON 中,id:1 和 id:7 的实例有一个名为fornecedor
结构不同的字段,这不应该是因为前端期望它们相同。其他示例是带有字段的 id:2 和 id:6produto
等等。
上面的 JSON 是下面模型类列表的序列化Pedido
:
模型类Fornecedor
是:
模型类Produto
是:
问题:JSON 的结构是预期行为的表示?如果是这样,有人可以告诉我如何使第一个实例中的所有实例始终具有具有各自值的所有属性(这意味着重复的属性和值!)。
谢谢!
java - 如何使用 (Spring) webClient 和 @JsonView 过滤的 DTO 调用 API?
我已经深入研究了文档,但只找到了对使用的机械方面的循环引用webCleint
,没有任何具体的例子……而且没有任何东西将它与使用合并@JsonView
。
我有一个微服务,它接受来自客户端的 DTO,执行基本验证,然后想将其传递给另一个微服务。但是,在传递它时,我想根据 JsonView 删除字段。
基本用户 DTO
我如何 a) 实际构建 a webClient
,用它发出请求,并返回一个可用的结果,b) 给它我的 DTO 过滤@JsonView(Views.Internal.class)
?
(关于webClient
自身的文档令人困惑,因为它表明每个请求都需要一个单独的请求(将其与 区分restTemplate
),但我发现的示例在服务类中将一个实例化为静态的……
gradle - 任务“:compileGsonViews”的执行优化已被禁用
我们最近将项目从 Grails 3 升级到了 5.1.1。实际上,这并不是真正的升级,而是迁移。我们最终使用 5.1.1 创建了一个新项目,并将我们所有的代码迁移到其中。目前一切正常,但有一个警告除外:
事实上,正如我们的 newrelic 所示,该应用程序现在在 gson 渲染上非常慢。通常第一次调用一个endpoint很慢,后面的调用就OK了。
有解决办法吗?
这是我们的build.gradle
:
更新
在新制作的项目上重现的步骤
更新
如果我使用 更新grailsGradlePluginVersion
并5.1.1
运行应用程序grails run-app
,我将面临另一个问题:
grails - grails 4.0.10 的正确 build.gradle 转换器版本是什么?
使用我的 Grails 4.0.10 构建我的默认 JSON 视图会引发“NoSuchMethod”错误
这个错误发生在这个简单的 Grails 控制台示例中:
我尝试了各种构建来消除错误,包括:
或不指定任何内容,或让版本默认为最新。在依赖报告中,我看到了这些行,它们可能试图告诉我一些事情:
并从我们的一个插件中做出贡献:
从 Grails 3.2.13 升级后,我需要做什么才能让 JSON 视图再次工作?