如何在 Haskell 中解析 exiftool JSON 输出的示例
我无法理解任何文档。有人可以提供一个示例,说明如何使用 Haskell 模块 Text.JSON
解析以下缩短的 exiftool
输出吗?数据是使用命令 exiftool -G -j
生成的。
[{
"SourceFile": "DSC00690.JPG",
"ExifTool:ExifToolVersion": 7.82,
"File:FileName": "DSC00690.JPG",
"Composite:LightValue": 11.6
},
{
"SourceFile": "DSC00693.JPG",
"ExifTool:ExifToolVersion": 7.82,
"File:FileName": "DSC00693.JPG",
"EXIF:Compression": "JPEG (old-style)",
"EXIF:ThumbnailLength": 4817,
"Composite:LightValue": 13.0
},
{
"SourceFile": "DSC00694.JPG",
"ExifTool:ExifToolVersion": 7.82,
"File:FileName": "DSC00694.JPG",
"Composite:LightValue": 3.7
}]
I can't make sense of any of the documentation. Can someone please provide an example of how I can parse the following shortened exiftool
output using the Haskell module Text.JSON
? The data is generating using the command exiftool -G -j <files.jpg>
.
[{
"SourceFile": "DSC00690.JPG",
"ExifTool:ExifToolVersion": 7.82,
"File:FileName": "DSC00690.JPG",
"Composite:LightValue": 11.6
},
{
"SourceFile": "DSC00693.JPG",
"ExifTool:ExifToolVersion": 7.82,
"File:FileName": "DSC00693.JPG",
"EXIF:Compression": "JPEG (old-style)",
"EXIF:ThumbnailLength": 4817,
"Composite:LightValue": 13.0
},
{
"SourceFile": "DSC00694.JPG",
"ExifTool:ExifToolVersion": 7.82,
"File:FileName": "DSC00694.JPG",
"Composite:LightValue": 3.7
}]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好吧,最简单的方法是从 json 包中获取 JSValue,如下所示(假设你的数据在text.json中):
这只是给你一个通用的json Haskell数据类型。
下一步是为您的数据定义一个自定义 Haskell 数据类型,并为其编写一个 JSON 实例,该实例在上面的 JSValue 和您的类型之间进行转换。
Well, the easiest way is to get back a JSValue from the json package, like so (assuming your data is in text.json):
this just gives you a generic json Haskell data type.
The next step will be to define a custom Haskell data type for your data, and write an instance of JSON for that, that converts between JSValue's as above, and your type.
感谢大家。根据您的建议,我能够将以下内容放在一起,将 JSON 转换回名称-值对。
不幸的是,该库似乎无法将 JSON 直接转换回简单的 Haskell 数据结构。在 Python 中,它是一行:
json.loads(s)
。Thanks to all. From your suggestions I was able to put together the following which translates the JSON back into name-value pairs.
Unfortunately, it seems the library is unable to translate the JSON straight back into a simple Haskell data structure. In Python, it is a one-liner:
json.loads(s)
.