jenetics/jpx

m and m/s unwanted in ele and speed

Closed this issue · 2 comments

Following your example:

final GPX gpx = GPX.builder()
    .addTrack(track -> track
        .addSegment(segment -> segment
        .addPoint(p -> p.lat(48.20100).lon(16.31651).ele(283))
        .addPoint(p -> p.lat(48.20112).lon(16.31639).ele(278))
        .addPoint(p -> p.lat(48.20126).lon(16.31601).ele(274))))
    .build();

if I add ele and speed, instead of just the double value in the JSON also appears m and m/s and so the JSON is invalid:

{"version":"1.1","extensions":null,"creator":"JPX - https://github.com/jenetics/jpx","wayPoints":[],"tracks":[{"name":null,"empty":false,"type":null,"number":null,"comment":null,"source":null,"extensions":null,"segments":[{"empty":false,"extensions":null,"points":[{"name":null,"type":null,"comment":null,"source":null,"time":"2022-09-16T08:41:34Z","extensions":null,"symbol":null,"longitude":12.632256,"speed":0.025291677564382553 m/s,"magneticVariation":null,"geoidHeight":null,"fix":null,"sat":null,"hdop":null,"vdop":null,"pdop":null,"ageOfGPSData":null,"dgpsid":null,"course":null,"latitude":41.932069,"elevation":9.994 m,"links":[],"description":null},{"name":null,"type":null,"comment":null,"source":null,"time":"2022-09-16T08:41:34Z","extensions":null,"symbol":null,"longitude":12.632235,"speed":0.025291677564382553 m/s,"magneticVariation":null,"geoidHeight":null,"fix":null,"sat":null,"hdop":null,"vdop":null,"pdop":null,"ageOfGPSData":null,"dgpsid":null,"course":null,"latitude":41.932084,"elevation":9.994 m,"links":[],"description":null},{"name":null,"type":null,"comment":null,"source":null,"time":"2022-09-16T08:41:34Z","extensions":null,"symbol":null,"longitude":12.632313,"speed":0.025291677564382553 m/s,"magneticVariation":null,"geoidHeight":null,"fix":null,"sat":null,"hdop":null,"vdop":null,"pdop":null,"ageOfGPSData":null,"dgpsid":null,"course":null,"latitude":41.932056,"elevation":9.994 m,"links":[],"description":null},{"name":null,"type":null,"comment":null,"source":null,"time":"2022-09-16T08:41:34Z","extensions":null,"symbol":null,"longitude":12.632269,"speed":0.025291677564382553 m/s,"magneticVariation":null,"geoidHeight":null,"fix":null,"sat":null,"hdop":null,"vdop":null,"pdop":null,"ageOfGPSData":null,"dgpsid":null,"course":null,"latitude":41.932011,"elevation":9.994 m,"links":[],"description":null},{"name":null,"type":null,"comment":null,"source":null,"time":"2022-09-16T08:41:34Z","extensions":null,"symbol":null,"longitude":12.632249,"speed":0.025291677564382553 m/s,"magneticVariation":null,"geoidHeight":null,"fix":null,"sat":null,"hdop":null,"vdop":null,"pdop":null,"ageOfGPSData":null,"dgpsid":null,"course":null,"latitude":41.932046,"elevation":9.994 m,"links":[],"description":null}]}],"links":[],"description":null}],"metadata":null,"routes":[]}

Am I missing something?

I guess you tried to marshal the GPX object with a library like Jackson. I used classes to represent heights and speed (Length and Speed) and overrode the toString method. This methods append "m" and "m/s" to the value. To solve this problem you can implement your own serializers for this types. Baeldung describes it in this article: https://www.baeldung.com/jackson-custom-serialization

Thanks.