【问题标题】:Need help for using JSON data in windows app在 Windows 应用程序中使用 JSON 数据需要帮助
【发布时间】:2015-07-27 10:15:16
【问题描述】:

假设这是我通过 API 收到的 JSON 数据...

var client = new HttpClient();

        var uri = new Uri("blabla.com");
        var response = await client.GetAsync(uri);
        string result = await response.Content.ReadAsStringAsync();

[

{

“id”:“1”,

    "title": "Test_rom",
    "subtitle": "",
    "icon": "http://lpl.info/Admin/upload/cat.1.png"
},
{
    "id": "2",
    "title": "Jewelry",
    "subtitle": "",
    "icon": "http://lpl.info/Admin/upload/cat.2.png"
},

{
    "id": "3",
    "title": "Jackets",
    "subtitle": "All sizes available",
    "icon": "http://lpl.info/Admin/upload/cat.3.png"
}

] 在此之后,我创建了一个类 RootObject ... 公共类 RootObject {

公共字符串 id { 获取;放; }

public string title { get; set; }
public string subtitle { get; set; }
public string icon { get; set; }

}

现在我只想显示“标题”键的值...(使用 C#)

RootObject TotalList = new RootObject();

字符串集线器 = " ";

foreach(TotalList.title 中的 var d)

{hub = hub + " " + d.ToString(); }

ResultsText.Text=hub;

但这是给出错误..请帮助

【问题讨论】:

  • 先请再读一遍,stackoverflow.com/help/how-to-ask
  • 第二,我之前问过,你用的是调试器吗?
  • 三、贴出确切的错误
  • 是的,我使用调试器...顺便说一句,我解决了这个问题:)

标签: json windows


【解决方案1】:

也许你应该使用而不是等待。 Await 将继续处理而不等待响应,因此您会看到 null。

var response = client.GetAsync(uri).Result;

您不应该遍历您的类对象字段。这是错误的

foreach (var d in TotalList.title)

{hub = hub + " " + d.ToString(); }

如果填充了 TotalList(您应该能够在调试器中看到),您可以使用

访问 title 的值
TotalList.title

希望对你有所帮助,不要放弃。

【讨论】:

  • 我已经解决了这个问题......是的,你是对的。谢谢 :)
【解决方案2】:

我用这种格式解决了这个问题....

private async void button_Click(object sender, RoutedEventArgs e)

    {
        var client = new HttpClient();
        var uri = new Uri("http://blabla.com");
        var response = await client.GetAsync(uri);
        var result = await response.Content.ReadAsStringAsync();

        RootObject TotalList = new RootObject();

           MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(result));
          DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<RootObject>));
          List <RootObject> resu =(List<RootObject>)ser.ReadObject(ms);

字符串集线器 = " ";

foreach (RootObject d in resu)

{ hub = hub + " " + d.title.ToString(); }

ResultsText.Text = hub;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    相关资源
    最近更新 更多