Symfonyob娱乐下载 5.1新功能:序列化器改进
2020年4月30日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
添加@ ignore
注释
ob娱乐下载Symfony 5.1增加了一个新的@ ignore
注释以允许在序列化时忽略某些值。可以将注释应用于属性和方法。例子:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用ob娱乐下载\组件\序列化器\注释\忽略;类SomeClass{公共$someProperty;/ * * *@ ignore() * /公共$anotherProperty;私人$lastProperty;/ * * *@ ignore() * /公共函数getLastProperty(){返回$这->lastProperty;}}
也可以在YAML和XML格式中使用忽略
选择:
1 2 3 4 5 6 7
App \ SomePath \ SomeClas:属性:#……anotherProperty:忽略:真正的lastProperty:忽略:真正的
1 2 3 4 5
<类的名字=“应用程序\ SomePath \ SomeClass”><!——……--><属性的名字=“anotherProperty”忽略=“真正的”/><属性的名字=“lastProperty”忽略=“真正的”/>类>
打开Denormalizer
api通常返回嵌套的响应,其中您只需要一些子对象。在Syob娱乐下载mfony 5.1中,多亏了新的UnwrappingDenormalizer
,你可以得到任何嵌套对象,而不需要创建不必要的模型类:
1 2 3 4 5 6 7 8
使用ob娱乐下载\组件\序列化器\标准化者\UnwrappingDenormalizer;$结果=$连载->反序列化(”{“巴兹”:{“foo”:“酒吧”,“内部”:{“标题”:“价值”,“数量”:[5 3]}}}”、对象::类,[UnwrappingDenormalizer::UNWRAP_PATH = >“(baz)(内部)”]);// $result->title === 'value'
增加了对stdClass
当一个对象包含PHP的属性时stdClass
,序列化失败。在Syob娱乐下载mfony 5.1中,我们增加了对它的支持:
1 2 3 4 5
$对象=新\ stdClass ();$对象->foo =“f”;$对象->酒吧=“b”;$标准化者->正常化($对象) === [“foo”= >“f”,“酒吧”= >“b”]
标量反规范化
在Syob娱乐下载mfony 5.1中,我们还增加了对标量值反规范化的支持。这些标量值是数字(int
或浮动
),布尔值和字符串。下面的例子展示了如何规范化和反规范化这些值:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20
使用ob娱乐下载\组件\序列化器\编码器\JsonEncoder;使用ob娱乐下载\组件\序列化器\标准化者\ArrayDenormalizer;使用ob娱乐下载\组件\序列化器\序列化器;$序列化器=新序列化器([],[json的= >新JsonEncoder ()));“42”= = =$序列化器->序列化(42,json的)“真正的”= = =$序列化器->序列化(真正的,json的)“3.14”= = =$序列化器->序列化(3.14,json的)“foo酒吧”= = =$序列化器->序列化(“foo酒吧”,json的)$序列化器=新序列化器([新ArrayDenormalizer()]、[json的= >新JsonEncoder ()));[42) = = =$序列化器->反序列化(“[42]”,“int[]”,json的) [真正的,假) = = =$序列化器->反序列化(“(真、假)”,“bool[]”,json的) [3.14) = = =$序列化器->反序列化(“[3.14]”,“浮[]”,json的) [“foo酒吧”) = = =$序列化器->反序列化(“(“foo栏”)”,“string[]”,json的)
发表在#生活在边缘
评论
Normalize =>对象到数组的表示
serialize =>对象到数组到JSON字符串表示
数组到对象的JSON字符串表示形式
反规范化=>映射数组表示到对象
我猜它被称为“UnwrappingDenormalizer”,虽然使用了“反序列化”方法,因为JSON是完全反序列化的(到数组),但只有指定的路径被反序列化到对象。
serialize =>对象到数组到JSON字符串表示
数组到对象的JSON字符串表示形式
反规范化=>映射数组表示到对象
我猜它被称为“UnwrappingDenormalizer”,虽然使用了“反序列化”方法,因为JSON是完全反序列化的(到数组),但只有指定的路径被反序列化到对象。
是否可以将@Ignore注释与组一起使用?所以该属性或方法只在已定义的组上被忽略?
Jibé Barth is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now我猜“UnwrappingDenormalizer::UNWRAP_PATH”应该不加引号?