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

in programming •  7 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

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


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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

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