Бот не расшифровывает данные с Json формата

217
15 февраля 2022, 00:20
public class Exchanger {
    //dbb05023d4e92e3b35fb5b735a3ec0015cc348e0/
    public static String getExchanger(String message, Model model ) throws IOException {
        URL url =new URL("http://api.minfin.com.ua/nbu/dbb05023d4e92e3b35fb5b735a3ec0015cc348e0/");
        Scanner in =new Scanner((InputStream)url.getContent());
        String result = "";
        while (in.hasNext()){
            result += in.nextLine();
        }
        //  JSONObject object=new JSONObject(result);
    //   model.setKey(object.getString("key"));

        JSONObject usd = new JSONObject(result);
        model.setKey(usd.getString("key"));
        model.setBib(usd.getDouble("bib"));
        model.setAsk(usd.getDouble("ask"));
        return   "key"+model.getKey()+"\n"+
                "bib"+model.getBib(0.0)+"\n"+
               "ask"+model.getAsk(0.0);
//return result;

    }
}
Answer 1

Все просто :

import java.io.IOException;
import java.net.URL;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
import org.json.JSONObject;
public class Exchanger {
    private final static String MINFIN_URL = "http://api.minfin.com.ua/nbu/dbb05023d4e92e3b35fb5b735a3ec0015cc348e0/";
    public static List<Model> getExchanger() throws IOException {
        try (Scanner s = new Scanner(new URL(MINFIN_URL).openStream()).useDelimiter("\\A")) {
            final JSONObject jsonObject = new JSONObject(s.hasNext() ? s.next() : "");
            return StreamSupport.stream(jsonObject.names().spliterator(), false)
                    .map((c) -> {
                        final JSONObject obj = jsonObject.getJSONObject((String) c);
                        return new Model(obj.getString("currency"), obj.getDouble("ask"), obj.getDouble("bid"));
                    })
                    .collect(Collectors.toList());
        }
    }
}
class Model {
    private final Currency key;
    private final Double ask;
    private final Double bid;
    public Model(String key, Double ask, Double bid) {
        this.key = Currency.currencyFromString(key);
        this.ask = ask;
        this.bid = bid;
    }
    public Currency getKey() {
        return key;
    }
    public Double getAsk() {
        return ask;
    }
    public Double getBid() {
        return bid;
    }
    @Override
    public String toString() {
        return "Model{" + "key=" + key + ", ask=" + ask + ", bid=" + bid + '}';
    }
}
public enum Currency {
    EUR,USD,RUB;
    public static Currency currencyFromString(String currencyName){
        return java.util.Arrays.stream(Currency.values())
                .filter(currency->currency.name().equalsIgnoreCase(currencyName))
                .findAny().orElseThrow(UnsupportedOperationException::new);
    }
}

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Scanner;
import org.json.JSONObject;
public class Exchanger {
    //dbb05023d4e92e3b35fb5b735a3ec0015cc348e0/
    public static String getExchanger(String message, Model model) throws IOException {
        URL url = new URL("http://api.minfin.com.ua/nbu/dbb05023d4e92e3b35fb5b735a3ec0015cc348e0/");
        Scanner in = new Scanner((InputStream) url.getContent());
        String result = "";
        while (in.hasNext()) result += in.nextLine();
        System.out.println(result);
        JSONObject object=new JSONObject(result);
        JSONObject usd =  object.getJSONObject("usd");
        model.setKey(usd.getString("currency"));
        model.setBib(usd.getDouble("bid"));
        model.setAsk(usd.getDouble("ask"));
        JSONObject eur=object.getJSONObject("eur");
        model.setKey(eur.getString("currency"));
        model.setBib(eur.getDouble("bid"));
        model.setAsk(eur.getDouble("ask"));

        JSONObject rub =object.getJSONObject("rub");
        model.setKey(rub.getString("currency"));
        model.setBib(rub.getDouble("bid"));
        model.setAsk(rub.getDouble("ask"));

        return usd.getString("currency")+
                usd.getDouble("bid")+
                usd.getDouble("ask")+
                eur.getString("currency")+
                eur.getDouble("bid")+
                eur.getDouble("ask")+
                rub.getString("currency")+
                rub.getDouble("bid")+
                rub.getDouble("ask");

    }
}
READ ALSO
dynamic binding

dynamic binding

читаю "Философию Java" ЭккеляКак-то к сожалению он сложно описывает некоторые моменты, и один из таких: Динамическое связывание

161
Отсортировать Map&lt;Event, List&lt;Data&gt;&gt; по значению List.size

Отсортировать Map<Event, List<Data>> по значению List.size

я решил вопрос через создание дополнительной мапы и выглядит это жутко

119
return не действует на наследника (Java)

return не действует на наследника (Java)

Доброе время сутокЯ столкнулся с такой проблемой, что у меня есть родительский класс и его наследник

115
Как поменять шрифт кроме иконок?

Как поменять шрифт кроме иконок?

На сайте используется несколько шрифтов, нужно установить один, к примеру Montserrat, кроме иконок (на сайте так же есть inline стили, которые имеют...

152