Exiftools can output the metadata in a json format. Some things to consider
If using json, this will change the format display to the user in the metadata dialog. "AF Aperture" will now read as "AFAperture". This is not as user friendly. What does the real raw display as? Apparently exiftool is formatting it one way or another.
in json, it has strings and numbers. Will this parse well enough? In non-json, everything is treated like a string.
in json, it will output the binary chars \u000 chars which it seems the txt output doesn't handle. If this were to happen, would need to truncate the lines so it doesn't wrap or ideally just replace the entire line with (Binary data)
It was mentioned that if using json, could make a table of chars rather than looping over them. However, lua supports key names with spaces. This is perfectly legit code to lua
local t = {}
t["hello world"] = "hi"
t["another space"] = "spaces"
for key,value in pairs(t) do print(key,value) end
Using a table rather than loops would be a lot more efficient since multiple keys need to be found. This idea is independent of the format and only discussed here as it was brought up as a supporting point for json.
Judging by other metadata viewers, having the keys show up as "FocalLength" instead of "Focal Length" to the user is a deal breaker. This does leave 2 outcomes which can be made into separate tickets.
I would like to see the binary data replaces with just (Binary data) whenever it occurs
I would like to see a table of metadata instead of the looping over everything and searching.
Exiftools can output the metadata in a json format. Some things to consider
If using json, this will change the format display to the user in the metadata dialog. "AF Aperture" will now read as "AFAperture". This is not as user friendly. What does the real raw display as? Apparently exiftool is formatting it one way or another.
in json, it has strings and numbers. Will this parse well enough? In non-json, everything is treated like a string.
in json, it will output the binary chars \u000 chars which it seems the txt output doesn't handle. If this were to happen, would need to truncate the lines so it doesn't wrap or ideally just replace the entire line with (Binary data)
It was mentioned that if using json, could make a table of chars rather than looping over them. However, lua supports key names with spaces. This is perfectly legit code to lua
Using a table rather than loops would be a lot more efficient since multiple keys need to be found. This idea is independent of the format and only discussed here as it was brought up as a supporting point for json.