Пишу приложение на Java. Часть 2

in #programming8 years ago (edited)


Доброго времени суток уважаемые подписчики, а также те кто заинтересовался темой и заглянул ко мне :)

Продолжаю свои посты о написании моего приложения на 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

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


Спасибо всем за внимание, как говорится, продолжение следует! Не забывайте подписываться на мой блог!

Sort:  

This post received a 1.2% upvote from @randowhale thanks to @ekaterinka! For more information, click here!