这其实很简单。我将说明如何调用REST服务并将JSON数据解析为一个类。然后我认为你可以自己完成字符串连接和显示。
首先添加对System.ServiceModel.Web程序集的引用,它将使您可以访问System.Runtime.Serialization.Json命名空间中的DataContractJsonSerializer。
接下来,创建一个类来表示JSON。使用自动实现的属性,其名称与JSON服务返回:我假设你想要一个按钮被点击时,为了获得数据
public class ExchangeRate
{
public string lhs { get; set; }
public string rhs { get; set; }
public string error { get; set; }
public string icc { get; set; }
}
,所以这里是一个小的应用程序有一个按钮单击处理程序。
using System;
using System.Net;
using System.Runtime.Serialization.Json;
using System.Windows;
using Microsoft.Phone.Controls;
namespace WP7JsonClient
{
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
var client = new WebClient();
// Callback function written in-line as a lambda statement
client.OpenReadCompleted +=
(s, eargs) =>
{
var serializer = new DataContractJsonSerializer(typeof(ExchangeRate));
var exchangeRate = (ExchangeRate)serializer.ReadObject(eargs.Result);
// display exchange rate data here...
};
var uri = new Uri("http://www.google.com/ig/calculator?hl=en&q=10USD=?DKK");
client.OpenReadAsync(uri);
}
}
}
我已经写了异步回调方法在线作为一个lambda语句,但你可以很容易地写,作为一个单独的方法。在调用序列化程序读取对象之后,JSON数据现在可作为JSON序列化类(ExchangeRate)的实例使用,因此您可以直接使用该对象,使用其属性执行数据绑定等等。
你在这里问几个问题。你应该把你的问题集中在一个问题上,大概是你的题目问题。 – DMan
你在哪里遇到麻烦 - 是解析JSON还是从字符串值中提取数字?如果前者,C#中有几个JSON库,您可以尝试。 –
谢谢,我会试试图书馆。到目前为止,我一直在尝试几种方法,但是既没有解析它,也没有提取任何东西,正如我想的那样。将尝试更多:) – AndreasB