Я пытаюсь, чтобы моя программа Java записывала свой вывод в файл geoJSON. Что-то вроде следующих работ хорошоJSONArray добавляет нежелательные кавычки в geoJSON
JSONArray coord = new JSONArray("["+obj.getLng()+","+obj.getLat()+"]");
point.put("coordinates", coord);
генерирует следующий правильный JSON строки
"coordinates":[-105.93879779882633,36.29086585830942]
Однако, я хотел бы также включать линии (и многоугольники) в моем выходе. Они определяются как наборы координат, так что результирующая строка выглядит примерно так
"coordinates":[[-106.0,36.0],[-105.96856743366506,36.0],[-105.93713486733012,36.0]]
Я пытающийся прочитать набор точек, которые определяют мою линию в JSONArray. Однако, независимо от того, что я делаю, в моей последней строке JSON заканчиваются лишние кавычки. Что-то вроде
"coordinates":["[-106.0,36.0],[-105.96856743366506,36.0],[-105.93713486733012,36.0]"]
если я пытаюсь использовать StringBuilder для построения точного содержания строки Я хотел бы значение координаты для хранения. Если я попытаюсь создать массив массивов координат и дать это конструктору JSONArray, я просто вернусь к каждой координатной паре в кавычках.
Мой вопрос: почему использование StringBuilder или других методов для создания моего JSONArray приводит к этому результату, но прямое переключение в String на новый конструктор JSONArray не так ли? Конструктор JSONArray кажется вполне способен интерпретировать
new JSONArray("["+obj.getLng()+","+obj.getLat()+"]");
правильно, но разваливается, когда я говорю
StringBuilder builder = new StringBuilder();
for (Obj obj : objs) {
builder.append("["+obj.getLng()+","+obj.getLat()+"]");
}
new JSONArray(builder.toString());
Это кажется тривиальной проблемой, поэтому решение моей проблемы, скорее всего, просто, но я бы особенно, как помочь понять, почему это так.
Пример:
JSONObject point = new JSONObject();
JSONArray coord = new JSONArray("["+150+","+30+"]");
point.put("coordinates", coord);
System.out.println(point.toString());
приводит к
{"coordinates":[150,30]}
однако
JSONObject lineString = new JSONObject();
String[] coords = {"["+150+","+30+"],["+160+","+40+"],["+170+","+50+"]"};
JSONArray coord = new JSONArray(coords);
lineString.put("coordinates", coord);
System.out.println(lineString.toString());
результатов в
{"coordinates":["[150,30],[160,40],[170,50]"]}
Вопрос заключается в кавычки, окружающие корды массив строк ({ "координаты": [-> " [150,30], [160,40], [170,50] " < - ]})
Где вы добавив запятые? Где внешние скобки? Пожалуйста, укажите [MCVE] (http://stackoverflow.com/help/mcve), чтобы мы могли идентифицировать проблему. – shmosel
Ваш пример сильно отличается от вашего вопроса, но он делает довольно очевидным, почему вы получаете свои результаты. – shmosel