0

好的,我是编程新手,所以请多多包涵。我创建了一个包含以下方法的类。

public LastPrice ()
{
WebClient wclient = new WebClient();
string rawprices = wclient.DownloadString("https://www.bitstamp.net/api/ticker/");
string lastprice = rawprices.Substring(27, 5);
}

我的问题是我可以使用哪个表单控件来显示表单上 lastprice 变量中的值。我希望价值每分钟左右不断更新。任何帮助,将不胜感激。

提前致谢

4

2 回答 2

1

标签或文本框是正常的(取决于它是否只读)。如果您希望用户能够复制值,您也可以将文本框设为只读。您可能希望使用计时器控件来处理每分钟的更新。

于 2013-07-01T17:27:06.587 回答
0

由于您使用的是 JSON 数据,而不是尝试使用字符串匹配(例如, )来查找您正在寻找的值.Substring(),因此将您从服务器获得的数据解析为一个对象会好得多。当/如果您需要处理更复杂的数据时,字符串匹配将很快崩溃。

以下是您将如何执行此操作:

第 1 步:在您的项目中引用 JSON.Net 库。(在 Visual Studio 中右键单击您的项目,然后单击“管理 NuGet 包”。搜索“json.net”,然后将其安装到您的项目中。

第 2 步:创建一个表示您将从服务器获得的 JSON 数据结构的类。(如果这是 JSON 中的一个非常复杂且庞大的数据结构,那么为它创建一个类将是不切实际的,并且有一些方法可以解决这个问题,但现在你应该了解基础知识)。对于那个 JSON,一个类看起来像这样:

public class Prices
{
    public decimal high { get; set; }
    public decimal last { get; set; }
    public double timestamp { get; set; }
    public decimal bid { get; set; }
    public decimal volume { get; set; }
    public decimal low { get; set; }
    public decimal ask { get; set; }
}

第 3 步:现在您有了一个类,您可以轻松地将 JSON 数据转换为易于使用的格式:

var client = new WebClient
{
    Encoding = Encoding.UTF8    //It's good practice to specify UTF-8 encoding, because if you don't, then you can get garbled text back from the server
};

var rawData = client.DownloadString("https://www.bitstamp.net/api/ticker/");
var btcInfo = JsonConvert.DeserializeObject<Prices>(rawData);

//Now, btcInfo.last.ToString() will contain the value you're looking for.
于 2013-07-01T18:04:27.193 回答