Замена значения ключа в файле json

279
17 июня 2017, 12:25

Есть файл с настройками стороннего приложения json. В файле есть координаты GPS, которые надо изменить на мои.
Пример содержимого файла:

{
  "map": {
    "lng": 37.01236582545265,
    "lat": 54.98325589056621,
    "speed": 1.9,
    "radius": 1.0,
  },
}

второй день бьюсь над этим, не могу поменять координаты для lng и lat. Собственно, даже прочитать значения lng и lat не получается:

JsonParser parser = new JsonParser();
JsonElement jsonElement = parser.parse("C:\\Users\\...\\test.json");
JsonObject rootObject = jsonElement.getAsJsonObject();
JsonObject childObject = rootObject.getAsJsonObject("map");
String place = childObject.get("lat").getAsString();
System.out.println(place);

Помогите с кодом для чтения, а самое главное для замены значений lat и lng

Answer 1

Я использую minimal-json поэтому код вот такой:

p.s.: ваш json я немного подправил - убрал запятые в конце Вычитывает json из файла, в файле тоже что и в строке String, только без экранирований кавычек конечно. Сохраняет в файл новый json.

try {
    //Read from file
    String jsonn = new String(Files.readAllBytes(Paths.get("/home/ufo/1.txt")));
    //Read from String
    //String jsonn = "{ \"map\": {\"lng\": 37.01236582545265, \"lat\": 54.98325589056621, \"speed\": 1.9, \"radius\": 1.0 }  }";
    JsonValue value = Json.parse(jsonn);  
    value.asObject().get("map").asObject().set("lng", 16.2222222);
    value.asObject().get("map").asObject().set("lat", 17.3333333);
    //Debug
    System.out.println(value.toString());
    //Write to file
    PrintWriter writer = new PrintWriter("/home/ufo/1.txt", "UTF-8");
    writer.println(value.toString());
    writer.close();
} catch (IOException ex) {
    System.err.println(ex.getMessage());
}
READ ALSO
Особенности работы дженериков в Java

Особенности работы дженериков в Java

Прежде чем отвечать, прошу вдумчиво прочитать и осмыслить вопросИтак у нас есть такой код, он скомпилируется и никаких ошибок не будет:

368
java альтернатива JxBrowser и javafx WebView

java альтернатива JxBrowser и javafx WebView

Собственно есть ли бесплатная ли альтернатива JxBrowser ?

324
Как сделать прогресс-бар для показа буферизации в онлайн аудио плеере

Как сделать прогресс-бар для показа буферизации в онлайн аудио плеере

Класс, в котором происходит выбор трека (url-канала) для проигрывания:

454