1

我正在使用此代码从网站下载字符串:

static public String getLast() throws IOException {
    String result = "";
    URL url = new URL("https://www.bitstamp.net/api/ticker/");
    BufferedReader in = new BufferedReader(new InputStreamReader(
            url.openStream()));
    String str;
    while ((str = in.readLine()) != null) {
        result += str;
    }
    in.close();
    return result;
}

当我打印此方法的结果时,这就是我得到的:

{"high": "349.90", "last": "335.23", "timestamp": "1384198415", "bid": "335.00", "volume": "33743.67611671", "low": "300.28", "ask": "335.23"}

这正是您打开 URL 时显示的内容。这对我来说很好,但如果有更有效的方法可以做到这一点,请告诉我。

我需要提取的是335.23。这个数字是不断变化的,但“high”、“last”、“timestamp”等词始终保持不变。我需要将 335.23 提取为双精度。这可能吗?

编辑:

解决了

String url = "https://www.bitstamp.net/api/ticker/";
    try {
        JsonFactory factory = new JsonFactory();
        JsonParser jParser = factory.createParser(new URL(url));
        while (jParser.nextToken() != JsonToken.END_OBJECT) {

            String fieldname = jParser.getCurrentName();
            if ("last".equals(fieldname)) {
                jParser.nextToken();
                System.out.println(jParser.getText());
                break;
            }

        }
        jParser.close();

    } catch (JsonGenerationException e) {
        e.printStackTrace();
    } catch (JarException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
4

3 回答 3

2

这是 JSON。使用像Jackson这样的好的解析器。也有很好的教程可用。

于 2013-11-11T19:52:39.810 回答
0

响应是一个 json。使用 java JSON Parser 并获取“高”元素的值。Java json 解析器之一可在 ( http://www.json.org/java/index.html )

JSONObject obj = new JSONObject(" .... ");
String pageName = obj.getString("high");
于 2013-11-11T19:54:29.140 回答
0

您收到的数据字符串称为JSON 编码JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。使用细粒度的简单 json 编码器和解码器对数据进行编码和解码。

于 2013-11-11T19:54:35.747 回答