serialization 相关问题

序列化是将数据结构转换为易于存储或传输并随后重建的格式的过程。

php phar 文件的“phar://”前缀

正在学习php phar反序列化(引入了BlckHat2010,成熟了BlackHat2018) # 创建_phar.php 我正在学习php phar反序列化(引入BlckHat2010,成熟BlackHat2018) # create_phar.php <?php class SomeClassTheAppLoaded { public $data = null; public function __construct($data) { $this->data = $data; } public function __destruct() { system($this->data); } } try { $phar = new Phar('test.phar'); $phar->startBuffering(); $phar->addFromString('test.txt', 'text'); $phar->setStub("<?php __HALT_COMPILER(); ?>"); $object = new SomeClassTheAppLoaded('uname -a'); $phar->setMetadata($object); $phar->stopBuffering(); } catch (Exception $e) { echo $e->getMessage(); } 存档test.phar创建成功: $ php --define phar.readonly=0 create_phar.php 1>/dev/null 当发送到 file_exists 和 filesize 时会触发所需的漏洞 (uname -a): # vuln.php <?php class SomeClassTheAppLoaded { public $data = null; public function __construct($data) { $this->data = $data; } public function __destruct() { system($this->data); } } $size = filesize("phar://test.phar"); print_r("size = $size\n"); # uncomment will print file exists: 1 # $exists = file_exists("phar://test.phar"); # print_r("file exists: $exists\n"); 令我困扰的是返回的filesize是错误(而file_exists是正确) $ php vuln.php size = 0 Linux < ... omitted ...> -microsoft-standard-WSL2 < ... omitted ... > x86_64 GNU/Linux phar 的文件大小由 filesize('test.phar') 给出。 filesize('phar://test.phar')没有任何意义,因为phar是一个虚拟目录,并且目录的大小没有定义。 filesize('phar://test.phar/test.txt') 将返回 phar 中 test.txt 条目的大小。

回答 1 投票 0

从 JSON 转换 Kotlin 数据类时处理非构造函数属性

我正在开发一个项目,我们需要使用 GSON 库将 Kotlin 数据类序列化为 JSON 或从 JSON 序列化/反序列化。我正在做的课程看起来像: 数据类请求(valparent_identifi...

回答 1 投票 0

反序列化 XML 不适用于某个字段

我正在尝试将 XML 流反序列化为对象。它适用于除一个领域之外的所有领域,而且我无法弄清楚该领域出了什么问题。为了确保我知道我在处理什么,我...

回答 2 投票 0

如何在 symfony 中序列化嵌套对象

我还有下一堂课 #[断言\级联] 类 PropertyPromotionDto 实现 GetPhoneInterface { 公共函数 __construct( 私有字符串 $name, #[断言\NotBlank(消息: 'Не

回答 1 投票 0

使用 Azure 表存储的替代方法?

我想使用这样的实体进行表存储: 公共类 MyEntity { 公共字符串文本{获取;私人套装; } 公共 Int32 SomeValue { 获取;私人套装; } 公共 MyEntity(圣...

回答 5 投票 0

kotlinx.serialization.SerializationException:类“SmallPersistentVector”未在

我正在尝试保存一个对象,其中包含使用原始数据存储的列表,但它无法序列化该对象 我已经将 @Serialized 标签添加到数据类中,有多少来源建议,但我...

回答 1 投票 0

具有空值的日期的 XML 反序列化

我从一个供应商处获取了一个 xml 文件,其中包含一些“空”日期,如下所示: 通过进行常规反序列化,它会失败: 内部异常:系统。

回答 2 投票 0

Java 中枚举字段的序列化

来自ObjectInputStream的Javadoc: 枚举常量的反序列化与普通可序列化不同 或可外部化的对象。枚举常量的序列化形式 包含唯一...

回答 2 投票 0

isinstance() 在列表中包含的对象上失败

这是预期的行为吗(如果是,有人可以解释为什么吗)? 这种情况只发生在使用莳萝而不是泡菜时。 从 pathlib 导入路径 进口莳萝 我的班级: def __init__(self) -> 不...

回答 1 投票 0

如何在 C# 中仅从 DateTime 序列化 Xml Date

我有以下简单的课程; 生日 { 公共 DateTime 出生日期 {get;set;} 公共字符串名称 {get;set;} } 然后我使用以下命令将对象序列化为 Xml: 尝试 { XmlSerializer 序列化器 =...

回答 2 投票 0

如何在 Django 中序列化 ImageField?

我正在尝试序列化我的一个具有 ImageField 的模型。内置序列化器似乎无法序列化它,因此我想到编写一个自定义序列化器。你能告诉我我是怎么做的吗

回答 5 投票 0

使用可选的不同名称反序列化 XML

我有这个类的定义 公共课 Foo { } 反序列化为这个 xml 我有这个类的定义 public class Foo { } 反序列化到这个 xml 中 <?xml version="1.0"?> <Foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> </Foo> 此 xml 文件布局已存在于客户端计算机上。 我想将班级从 Foo 重命名为 Footastic。 public class Footastic { } 现在称为类 Footastic 的任何新序列化,都应序列化为 <?xml version="1.0"?> <Footastic xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> </Footastic> 我的问题是如何告诉反序列化接受Foo或Footastic? 我知道我可以通过指定 Footastic 属性将 Foo“重命名”为 XmlRoot。 [XmlRoot("Foo")] public class Footastic { } 但这也会改变对象的任何新序列化,这是不希望的。 新的序列化应序列化为 Footastic 反序列化时仅支持包含旧名称 Foo 的旧 xml 文件。以防万一您需要反序列化/序列化的代码。我真的没有做任何花哨的事情。 反序列化: Footastic 序列化: public static T? Deserialize<T>(string fileName) { if (!File.Exists(fileName)) return default; using FileStream streamReader = new(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); using var xr = XmlReader.Create(streamReader); XmlSerializer xmlDeSerializer = new(typeof(T)); return (T?)xmlDeSerializer.Deserialize(xr); } 尝试以下方法。 创建一个自定义 XML 阅读器,即时将名称 public static void Serialize<T>(T? value, string fileName) { if (value is null) return; Directory.CreateDirectory(Path.GetDirectoryName(fileName) ?? ""); using FileStream fileStream = new(fileName, FileMode.Create, FileAccess.Write, FileShare.Write); using var streamWriter = XmlWriter.Create(fileStream, new() { Encoding = Encoding.UTF8, Indent = true }); XmlSerializer xmlSerializer = new(typeof(T)); xmlSerializer.Serialize(streamWriter, value); } 替换为 Foo。Footastic 像这样使用它。 public class FooReader : XmlTextReader { // Add other constructor overloads as needed. public FooReader(string url) : base(url) { } public override string LocalName { get { if (base.LocalName == "Foo") return "Footastic"; return base.LocalName; } } } 这将接受 var ser = new XmlSerializer(typeof(Footastic)); using var fooReader = new FooReader("test.xml"); var foo = (Footastic)ser.Deserialize(fooReader); 和 Foo。不过,要小心!这将替换所有 Foo 元素! 如果其他地方的 xml 中存在同名元素,那么您需要进行额外的检查。

回答 1 投票 0

Flink 卡在广播上

我遇到了 Flink 在广播状态写入时卡住的问题: ctx.collect(数据) 其中 ctx 是 SourceContext 没有抛出任何异常,并且胎面转储卡在周围,...

回答 1 投票 0

如何使用 Kotlin 序列化来序列化 Any?

如何序列化以下数据?这是AppConfig,value的值可以是任何类型,我不能使用Any进行序列化。 [ { "key": "PROFILE_PHOTO", “……

回答 1 投票 0

将 ASMX Web 方法迁移到接受字符串数组的 WCF

我有一项旧版 ASMX 服务,可供许多客户端(java、.Net、Python 等)使用。我想将 ASMX 服务升级到 WCF,而不影响我的客户(意味着他们不会做任何更改...

回答 1 投票 0

修复 django 登录错误

我正在开发一个 django 项目,在完成注册和登录功能(序列化器和视图集)的代码后,我测试了这些功能,所以当注册功能看起来像

回答 1 投票 0

如何将序列化添加到 Kotlin Jet Compose 项目中?

我对 Kotlin 和 IntelliJ 总体来说还是个新手,我正在尝试将序列化库添加到 Jet Compose 项目中,但编辑 build.gradle.kts 似乎无法正确添加它们。 我不确定...

回答 1 投票 0

如何执行“before_serialize”代码?或者如何在序列化属性之前对其进行清理?

我遵循此模式以确保所有属性在保存之前都已标准化: 我的模型类 < ApplicationRecord before_validation :normalize_attributes def normalize_attribu...

回答 1 投票 0

Ical.net 午夜 12:00 序列化时出现序列化错误

使用 ICal.net,我使用以下代码序列化日历: var calendarSerializer = new CalendarSerializer(); var AttachmentContent = calendarSerializer.SerializeToString(myCalendar); 当我连载时...

回答 1 投票 0

JSON 序列化器类 - 为什么 json.dumps() 有效,而 json.dump() 无效?

我想要 json.dump() 一个具有 datetime.date 类型键的字典,为此我创建了一个序列化器类将日期键编码为字符串。令我惊讶的是它可以与 json.dumps() 一起使用,但是...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.