问题标签 [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.
rest - 尝试在仅从 RestfulController 扩展的 rest Controller 上使用 JSON 视图时获取 null 属性
我正在尝试 JSON 视图,而不是在使用 @Resource 的域类之上,而是通过创建一个 RestfulController 并尝试使用 JSON 视图呈现它。我已经在构建配置中添加了所有相关的依赖项。
我有一个像这样的域 Post 类(我不想直接公开)
所以我然后像这样创建了一个默认的 RestfulController:
我没有在这里覆盖任何默认的脚手架方法。
当我使用休息客户端访问默认值时(我已/api/posts (resources: postRest
在 UrlMappings 中映射)。当我使用我的 REST 客户端访问 URL 时,我得到了帖子的完整转储(包括保留在地图中的评论字段) - 这在我的 REST 客户端中看起来像这样 - 一切正常:
然后我尝试在grails-app/views/postRest
文件夹中添加 JSON 视图。
我做了一个非常简单的模板_post.gson,如下所示:
然后我添加了一个index.gson
来渲染模板:
这会通过此堆栈跟踪和 REST 客户端的 500 错误中断服务器。如果我注释掉与用户相关的 in_post.gson 行,一切正常。把它留在里面,它会失败:
如果我注释掉 post.user (和评级参考),它可以正常工作,但是当我尝试发布 post.user 时,它会因上述原因而失败。文档中有一条关于确保您的查询使用 fetch join 拉取 refs 的注释 - 所以我尝试提供覆盖以确保我返回了 fetch join - 我得到的只是空的返回给客户端:
为什么当我在没有 JSON 视图的情况下工作时它工作正常,而当我使用 JSON 视图时我无法获得包括引用在内的输出?我检查了列表请求,它在调试器中成功返回了列表 - 但在渲染中中断。
如果我可以让它工作,Grails 3.2.6 上的 JSON 视图看起来很不错。
grails - How do I create a grails 3 plugin which exposes a JSON view?
In my custom Grails plugin, how can I set up a JSON view for a non-domain class and get client apps to use it by default?
I have a view file in the plugin:
When I do grails install
, I can see that this .gson
file is in the generated JAR. However, the client app is not using it.
What can I do to make it work?
Are there any settings or steps that can make troubleshooting easier?
I am using Grails 3.2.4.
Update:
When I copy the view into a client app, using the exact same path, the view is getting invoked. It's only when the view is defined in the plugin that the view cannot be found.
The framework seems to be trying to look up the plugin as a class from the classloader:
myclientproject_com_mycompany_myplugin_myclass__myClass_gson
How do I get my plugin to add this class to the classpath?
json - 在 JSON 视图中,如何将对象展平为单个字符串?
在我的 grails 3 应用程序(我正在使用 grails 3.2.4)中,对于使用它的任何域对象,我有一个对象类型,我想将其序列化为字符串:
我想创建一个将 CustomId 序列化为字符串而不是对象的视图:
如何在不为使用 CustomId 的每个对象自定义视图的情况下做到这一点?
jackson - Jackson - 使用 JsonView 反序列化
我试图限制使用 Jackson JSONViews 对 JSON 对象的哪些属性进行反序列化。目的是使用它来防止我的 API 的使用者提交他们不应该提交的数据。
问题是,我要么误解了 JSONViews,要么做错了什么。见下文。
我在 Spring 开始尝试这样做,但注意到即使下面的简单测试也不起作用。
账户类
意见
测试
不幸的是,第二个断言失败了,因为 Users 里面有一个用户对象。
基本上,即使“用户”是 Account 的属性,我也不希望该值被反序列化,因为我使用了 JSONView (AccountViews.Public.class)。但是,无论我尝试什么,它似乎总是被反序列化并出现在帐户对象上。
非常感谢任何帮助。
错误
json - JsonView 返回空的 json 对象
我正在尝试实现一个 JsonView 来选择性地序列化实体中的字段,但是被序列化的 json 具有没有字段的空对象。下面是我的代码:
视图类:
实体:
控制器:
来自邮递员的 Json:
数据库只有 3 个结果,当我调试时肯定会将它们拉出来,只是没有成员被序列化。我正在使用 Spring 4.3.7 和 Jackson 2.8.7。关于可能出现什么问题或从哪里开始调试问题的任何想法?
谢谢
java - 我可以使用 Jackson @JsonView 序列化属性吗?
我的 REST API 中有一个复杂的类:
我还有另一个包含以下集合的类Complicated
:
当我序列化我的HasComplications
(使用 Spring MVC)时,我只想要一个片段Complicated
:
当我直接序列化 aComplicated
时,我可以@JsonView
用来告诉 Jackson 要序列化的属性集:
但是,当我Complicated
在complications
属性中传递序列化时,杰克逊会序列化所有属性。有没有办法让我声明性地告诉它“在序列化这个属性时使用这个视图”?
java - 使用 Jackson 和 Json-View 排除 json 中的字段
我正在使用json-view根据我的需要创建一个动态 json,它是一个很棒的库,我现在使用这个库有一段时间了。最近我的一个用例遇到问题,让我先放我的代码
用户类
ScreenInfoPojo 类
运行代码
结果
预期结果
问题
在我的用例中,我有一个类ScreenInfoPojo ,它与parentScreen引用相同的类,我正在尝试获取父级(“parentScreen.id”)的特定字段/字段,因为我正在获取我在子/目标对象上定义的所有字段( "id","name","createdBy.name","lastUpdatedBy.mobileNo","parentScreen.id" ) 并且父响应再次递归!我观察到的一件事只有在类有自己的引用的情况下才会发生,我将用户类引用作为两个不同的字段createdBy和lastUpdatedBy并尝试获取“name”和“mobileNo”
任何解决此问题的建议都会非常有帮助!!!!
谢谢
java - Spring中依赖JsonView的条件表达式
我正在构建一个 API,并且我已经构建了我的资源类来使用 JsonViews 根据 api 接收到的请求来过滤某些字段。我已经正常工作了,但是现在,我正在尝试进行一些性能升级,其中甚至没有计算资源上的某些字段。我在想,如果我能以某种方式制作一个评估正在使用哪个 JsonView 的条件表达式,这可能是一个起点 - 但是,我不确定这种方法。有没有更好的办法?
到目前为止我得到了什么:
照片.java:
PhotoController.java
PhotoService.java
java - 具有嵌套资源和 JsonView 过滤的 Spring HATEOAS
我正在尝试添加 HATEOAS 链接Resource<>
,同时还使用@JsonView
. 但是,我不知道如何将链接添加到嵌套对象。
在Github上的项目中,我扩展了这个项目(添加打开的拉取请求以使其在没有嵌套资源的情况下工作),添加具有嵌套User
.
访问~/characters/resource-filtered
路由时,预计嵌套的User
“播放器”会出现firstNm
andbioDetails
字段,并带有 Spring 生成的指向自身的链接,但没有userId
andlastNm
字段。
我的过滤工作正常,但我找不到符合ResourceAssembler
范式的嵌套资源示例。似乎有必要使用 aResourceAssembler
来进行@JsonView
工作。
任何协调这两个概念的帮助将不胜感激。如果您可以完全破解它,请考虑向我发送拉取请求。
用户.java
CharacterModel.java
CharacterController.java
CharacterResourceAssembler.java