1

我正在从上传的图像中序列化元数据,以便能够将其保存在数据库中。

可以使用 Newtonsoft (JSON.NET) 的 Custom JsonConverter 序列化数据 - 但是反序列化失败:

(IReadOnlyList<MetadataExtractor.Directory>)JsonConvert.DeserializeObject(metadata)

除了这个例外:

An exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.dll but was not handled in user code

Additional information: Could not create an instance of type MetadataExtractor.Directory. Type is an interface or abstract class and cannot be instantiated. Path '[0].Name', line 1, position 9.

由于目录列表可能因特定对象而异,我怀疑单独序列化/反序列化目录是微不足道的。

关于如何仅将上传图像的元数据部分保存到以后可以重复使用的表单中的任何简单建议?

4

1 回答 1

0

Metadata Extractor 不支持序列化,尽管目前正在讨论这个问题的 Java 版本存在一个活跃的问题。

那里的部分问题也适用于此 - 这完全取决于您为什么要序列化数据。如果您需要完全保真,这比您只想保存/恢复一些属性描述要多得多。

您可以使用以下内容将描述编写为 XML:

var doc = new XDocument(
    new XElement("Metadata",
        directories.Select(directory =>
            new XElement("Directory",
                new XAttribute("Name", directory.Name),
                directory.Tags.Select(tag =>
                    new XElement("Tag",
                        new XAttribute("Id", tag.Type.ToString("X"),
                        new XAttribute("Name", tag.Name),
                        tag.Description))))));

这将产生类似于以下内容的 XML:

<Metadata>
  <Directory Name="Exif IFD0">
    <Tag Id="10F" Name="Make">NIKON</Tag>
    <Tag Id="110" Name="Model">COOLPIX P340</Tag>
    ...
于 2017-01-14T23:23:06.757 回答