问题标签 [jms-serializer]
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.
symfony - 如何用依赖对象序列化 Symfony2 中的实体
我有一个 Product 实体和一个 ProductList 实体。
是否可以以 json 包含与该 ProductList 相关的 Product 对象的方式将 ProductList 对象序列化(和反序列化)为 json?
预期的输出是:
我正在使用 Symfony2 内置序列化程序和 JMS\Serializer 但我没有任何运气。
有什么办法可以做到这一点?
symfony - 如何为 JMS 序列化程序创建自定义排除策略,允许我在运行时决定是否包含特定字段?
正如标题所说,我正在尝试在运行时决定是否在序列化中包含字段。就我而言,此决定将基于权限。
我正在使用 Symfony 2,所以我要做的是添加一个名为 @ExcludeIf 的附加注释,它接受一个安全表达式。
我可以处理元数据的注释解析和存储,但我看不到如何将自定义排除策略与库集成。
有什么建议么?
注意:排除策略是 JMS 代码库中的实际构造,我只是无法找出在其他之上集成额外的最佳方法
PS:我之前曾问过这个问题,并被指出使用组。由于各种原因,这对于我的需求来说是一个非常糟糕的解决方案。
symfony - 自引用组上的 JMSSerializer 排除
我在使用 JMSSerializerBundle 序列化自引用属性时遇到了一些问题。
我想要所有属性,但 id 包含在父级中,但只有 id 包含在子级中。
实体:
期望的输出:
有没有办法做到这一点?
php - JMS 序列化程序。创建 2 种具有“一对多”关系的模型序列化方式
我正在将JMS Serializer用于 PHP 项目并且偶然发现了一个问题。
看代码
在这里,我展示了我的代码的简化示例。我用它来存储订单更改的历史记录。在更新之前和之后,我将此序列化模型保存到数据库中。好的。
现在我想用所有属性序列化 Product 的模型,以便在客户端工作。所以我的第一个想法是使用组。我需要为 $id 和 $name 属性“Group({'history','edit'})”和所有其他“Group({'edit'})”设置。好的,它适用于产品序列化,但它破坏了第一个解决方案。现在我的“订单历史”存储了不必要的信息,比如 $price 和 $description。
如果未隐式指定序列化组(如订单的历史示例中),是否有一些正确的方法来指定将使用的产品模型的默认组?或者通过其他方式使这两种类型的序列化可用,而无需将组移动到 Order 的模型中(因为实际上在这种情况下应该重构的模型不止一个)。
rest - 在 RESTful 控制器中提供表单类型选择
想象一下 restul symfony2 应用程序中的以下简单表单类型:
使用FOSRestBundle创建一个 RESTful 控制器,用于获取此表单类型的实现将返回类似的内容{"children":{"description":[]}}
(假设 JSON 作为默认值)。
是否有可能 - 以及如何 - 也将选择序列化?或者我在这里误解了什么?这个例子只有 3 个硬编码选项,但是例如一个具有 20/30/40/... 的实体呢?必须有一种方法可以将该信息提供给请求的客户。
symfony - 如何使用 JMS Serializer 和 Symfony2 实现模型侧加载
我正在使用 Ember.js 和 Ember-data 为 UI 和 Symfony2、FOSRestBundle 和 JMS Serializer 为后端 JSON API 构建一个项目。JMS Serializer 总是在其输出中嵌入嵌套模型,但 Ember-data要求模型是侧面加载的。我在任何地方都找不到将 JMS 序列化器配置为侧载模型而不是嵌入模型的示例。
当然,我可以只在 Ember-data 端编写一个适配器来转换结果,但我想获得侧加载数据的好处,而不仅仅是解决 JMS 序列化器中的(潜在)限制。
这就是我所说的嵌入模型数据的意思,这就是JMS-Serializer 现在所做的:
这就是我所说的侧面加载模型数据的意思,这就是我想要的:
有谁知道实现我想要的配置?或者有人在 JMS-Serializer 中实现了这个功能吗?
rest - 将自定义属性添加到序列化对象
我正在为 Web 服务开发 RESTful API。而且我需要公开一些不属于实体本身的属性。
例如我有一个Pizza
实体对象,它有它自己的size
和name
属性。我使用FOSRestBundle和JMSSerializer以 JSON 格式输出它。我已经为此实体设置了属性注释,以通过序列化组公开所需的属性,并且效果很好。
但是我需要添加一些不属于实体本身的属性。例如,我希望我pizza
拥有财产:isFresh
这是由某些PizzaService::isFresh(Pizza $pizza)
服务决定的。我该怎么做呢?
- 我应该在序列化过程中注入一些额外的逻辑吗(如果是这样的话)?
- 我是否应该使用要从原始实体公开的属性以及其他外部属性创建包装实体?
- 我应该在序列化之前将属性添加
isFresh
到原始Pizza
实体并填充到控制器中吗? - 我是否应该返回独立于实体数据的附加数据(例如在同级 JSON 属性中)?
换句话说:围绕这个问题的最佳实践是什么?你能提供例子吗?谢谢你。
php - JMS Serializer 读取 xml:lang 属性
这与PHP 中的 xml:lang 解析有关。
我们使用JMS 序列化程序创建 XML 请求并解析来自 Sirena-Travel(机票提供商)的 XML 响应。围绕这个序列化程序构建了一个完整的带注释的 DTO 系统,我们不太可能改变它。
有一个我们想要反序列化的响应 XML(与上述问题相同):
问题是:如何指定属性对应的xml:lang
属性?
这是描述最内部元素的类的样子:
显然,序列化程序不会将xml:lang
属性识别为$lang
属性。我尝试了几种方法:
- 添加
@SerializedName("xml:lang")
到$lang
属性。 添加命名空间注解:
到父节点或根节点,同时修改属性上的
/li>@XmlAttribute
注释$lang
看起来像
不用说,他们中的一个或两个都没有成功。
我还想到了替代解决方案,例如:
- 预处理 XML 以将
xml:lang
属性转换为lang
. - 编写一个自定义的反序列化处理程序来处理
DescribeLangElement
类。
但这些对我来说似乎有点矫枉过正。
是否有一种直接的方法可以xml:lang
使用 JMS 序列化器注释为属性指定属性?
php - 如果我已经在结果集中有对象,如何将教义实体转换为数组?
我正在使用迭代获取实体并更新其值。我有庞大的数据集,所以使用学说插入它需要很多时间。
我想将教义实体写入 csv 文件并使用 mysql“LOAD DATA INFILE”加载整个庞大的数据集。
有没有办法将教义对象写为文件中的 csv 值或至少转换为我可以写入 csv 的数组?
我尝试了 JMSSerialiser,但它没有输出到数组。