Пишу приложение на Java. Часть 2
Доброго времени суток уважаемые подписчики, а также те кто заинтересовался темой и заглянул ко мне :)
Продолжаю свои посты о написании моего приложения на Java.
В этой части я покажу как я парсил полученный от блокэксплорера JSON. Для парсинга JSON я воспользовался библиотекой JSON-simple. Основной разбор JSON происходит в классе jsonParser, в методе jsonread. Который получает на вход полученный ответ от блокэксплорера. Далее происходит парсинг JSON с преобразованием его в объект (надеюсь я правильно пишу :)).
/**
* Created by Kovatelj on 21.06.17.
*/
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import java.lang.*;
public class jsonParser {
private static JSONObject result;
public JSONObject getResult() {
return result;
}
public void jsonread(String jsonString) {
JSONParser parser = new JSONParser();
try {
Object object = parser.parse(jsonString);
JSONObject jsonObject = (JSONObject) object;
result = (JSONObject) jsonObject.get("result");
/* String result = (String) results.get("balance");
Double res = Double.parseDouble(result);*/
//System.out.println(result);
} catch(ParseException e) {
e.printStackTrace();
}
}
}
И после этого объект передается в основной класс, где я уже вытаскиваю из него нужные данные:
jsonParser resultParser = new jsonParser();
resultParser.jsonread(query.getResultQuery());
JSONObject jsonObject = resultParser.getResult();
String balanceJSON = (String) jsonObject.get("balance");
Float balance = Float.parseFloat(balanceJSON);
String firstactionJSON = (String) jsonObject.get("firstaction");
Long firstaction = Long.parseLong(firstactionJSON);
String dateFirstAction = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(new Date (firstaction*1000L));
String lastactionJSON = (String) jsonObject.get("lastaction");
Long lastaction = Long.parseLong(lastactionJSON);
String dateLastAction = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(new Date (lastaction*1000L));
System.out.println("Баланс кошелька: " + balance + " POST");
System.out.println("Первая активность кошелька: " + dateFirstAction);
System.out.println("Последняя активность кошелька: " + dateLastAction);
Ну вот в принципе и все, что касается парсинга JSON.
Я несколько дней промучался с получением даты и выводе ее в приемлемом виде. Точнее я получал ее из JSON в виде UNIX timestamp, но после преобразования получал 1970 год. После очередных долгих изысканий в интеренет, я наконец догадался, что получаю дату в секундах :) Тогда как Date принимает данные в милисекундах :) И вот написав в функцию преобразования
firstaction*1000L, вместо firstaction
я наконец получил правильное значение. Возможно это кому-то пригодится, ибо я нашел упоминание только на английском языке, в котором я не очень силен :)
Спасибо всем за внимание, как говорится, продолжение следует! Не забывайте подписываться на мой блог!