Ticket #19632: 19632.patch

File 19632.patch, 1.7 KB (added by taylor.smock, 6 years ago)

Try to use JsonValues when it makes sense (try to parse the tag value, falls back to JsonString of the value)

  • src/org/openstreetmap/josm/io/GeoJSONWriter.java

     
    11// License: GPL. For details, see LICENSE file.
    22package org.openstreetmap.josm.io;
    33
     4import java.io.StringReader;
    45import java.io.StringWriter;
    56import java.math.BigDecimal;
    67import java.math.RoundingMode;
     
    2122import javax.json.JsonValue;
    2223import javax.json.JsonWriter;
    2324import javax.json.stream.JsonGenerator;
     25import javax.json.stream.JsonParser;
     26import javax.json.stream.JsonParsingException;
    2427
    2528import org.openstreetmap.josm.data.Bounds;
    2629import org.openstreetmap.josm.data.coor.EastNorth;
     
    182185        // Properties
    183186        final JsonObjectBuilder propObj = Json.createObjectBuilder();
    184187        for (Entry<String, String> t : p.getKeys().entrySet()) {
    185             propObj.add(t.getKey(), t.getValue());
     188            propObj.add(t.getKey(), convertValueToJson(t.getValue()));
    186189        }
    187190        final JsonObject prop = propObj.build();
    188191
     
    200203        }
    201204    }
    202205
     206    private static JsonValue convertValueToJson(String value) {
     207        JsonParser parser = Json.createParser(new StringReader(value));
     208        try {
     209        if (parser.hasNext() && parser.next() != null)
     210            return parser.getValue();
     211        } catch (JsonParsingException e) {
     212            Logging.trace(e);
     213        }
     214        return Json.createValue(value);
     215    }
     216
    203217    protected void appendLayerBounds(DataSet ds, JsonObjectBuilder object) {
    204218        if (ds != null) {
    205219            Iterator<Bounds> it = ds.getDataSourceBounds().iterator();