【问题标题】:Read online json data in windows phone 8.1在 windows phone 8.1 中读取在线 json 数据
【发布时间】:2014-12-13 19:37:00
【问题描述】:

我正在为 windows phone 8.1 开发一个 hub-pivot 应用程序。我正在访问 Datamodel 文件夹中可用的 sampledata.json。但是如何在线使用相同的sampledata.json文件。

文件可通过使用访问

        Uri dataUri = new Uri("ms-appx:///DataModel/SampleData.json");

并且数据正在通过使用进行解析

        StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);
        string jsonText = await FileIO.ReadTextAsync(file);
        JsonObject jsonObject = JsonObject.Parse(jsonText);
        JsonArray jsonArray = jsonObject["Groups"].GetArray();

        foreach (JsonValue groupValue in jsonArray)
        {
            JsonObject groupObject = groupValue.GetObject();
            SampleDataGroup group = new SampleDataGroup(groupObject["UniqueId"].GetString(),
                                                        groupObject["Title"].GetString(),
                                                        groupObject["Subtitle"].GetString(),
                                                        groupObject["ImagePath"].GetString(),
                                                        groupObject["Description"].GetString());

            foreach (JsonValue itemValue in groupObject["Items"].GetArray())
            {
                JsonObject itemObject = itemValue.GetObject();
                group.Items.Add(new SampleDataItem(itemObject["UniqueId"].GetString(),
                                                   itemObject["Title"].GetString(),
                                                   itemObject["Subtitle"].GetString(),
                                                   itemObject["ImagePath"].GetString(),
                                                   itemObject["Description"].GetString(),
                                                   itemObject["Content"].GetString()));
            }
            this.Groups.Add(group);
        }

我想做httprequest,我也试过了

        var client = new HttpClient();
        HttpResponseMessage response = await client.GetAsync(new Uri("http://url/sampledata.json"));
        string jsonString = await response.Content.ReadAsStringAsync();

在这之后我被打动了。请帮忙

【问题讨论】:

  • 当您尝试使用 HttpClient 时发生了什么?看起来应该可以了。

标签: c# windows-phone-8.1


【解决方案1】:

我有一些辅助方法可以将 JSON 自动转换为所需的类型。 我的 ASP.NET WebAPI 服务返回 JSON,我也以 JSON 格式发布数据。

public static async Task<TRes> Post<TReq, TRes>(string url, TReq data, HttpClient httpClient)
{
    HttpContent content = ToJsonHttpContent(data);
    HttpResponseMessage response = await httpClient.PostAsync(url, content);
    response.EnsureSuccessStatusCode();
    return await response.Content.Extract<TRes>();
}

public static async Task<T> Extract<T>(this HttpContent me)
{
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
    using (Stream stream = await me.ReadAsStreamAsync())
    {
        return (T)serializer.ReadObject(stream);
    }
}

public static HttpContent ToJsonHttpContent(object data)
{
    string jsonData = JsonConvert.SerializeObject(data);
    return new StringContent(jsonData, Encoding.UTF8, "application/json");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多