public Dictionary <string, object> GPS() { Dictionary <string, object> Gps; long gpsOffset; if (!offsets.TryGetValue("gpsIFD", out gpsOffset)) { return(null); } Gps = extractTags(offsets["gpsIFD"], tags["gps"]); object GPSVersionID; if (Gps.TryGetValue("GPSVersionID", out GPSVersionID)) { if (GPSVersionID is string[]) { Gps["GPSVersionID"] = string.Join(".", (string[])GPSVersionID); } } // store the keys separately (required for JS part to iterate over) if (!Gps.ContainsKey("keys")) { string[] keys = new string[Gps.Keys.Count]; Gps.Keys.CopyTo(keys, 0); Gps.Add("keys", keys); } return(Gps); }