首页 > 解决方案 > 在 C# 中显示来自 JSON 的所有名称列表

问题描述

我对 C# 很陌生,也许这很容易解决,但我已经阅读了很多小时,我似乎无法弄清楚如何让它工作。

我想从 url 中检索 JSON 文件,并在完整列表中显示文件中的所有“名称”。

我试图从中获取名称的 Json 如下所示:

[{
  "endpoint":"127.0.0.1",
  "id":2,
  "identifiers":"steam:1",
  "license:1",
  "xbl:2533274989967058",
  "live:1","discord:1"],
  "name":"Name1",
  "ping":7
 },
 {
  "endpoint":"127.0.0.1",
  "id":3,
  "identifiers":"steam:2",
  "license:2",
  "discord:2",
  "fivem:2"],
  "name":"Name2",
  "ping":26
 },
 {
  "endpoint":"127.0.0.1",
  "id":5,
  "identifiers":["steam:3","license:3","discord:3"],
  "name":"Name3",
  "ping":34
 }
]

我的 RootObject(来自http://json2csharp.com/):

public class RootObject
{
    public string endpoint { get; set; }
    public int id { get; set; }
    public List<string> identifiers { get; set; }
    public string name { get; set; }
    public int ping { get; set; }
}

和代码本身:

WebClient client1 = new WebClient();
string strPageCode = client1.DownloadString("http://127.0.0.1:30120/players.json");
List<RootObject> list = JsonConvert.DeserializeObject<List<RootObject>>(strPageCode);
try
{
    MessageBox.Show(string.Join("\n", list), "Playerlist");
}
catch (ArgumentOutOfRangeException)
{
    MessageBox.Show("No players online","Playerlist");
}

我尝试了很多不同的方法,到目前为止,我已经得到它来显示名称的数量,但它显示如下

我尽可能地描述它,英语不是我的母语,所以如果它没有意义,请告诉我,我会尝试改写它。

标签: c#json

解决方案


您实际上是在尝试显示具有低意义的对象(具有许多属性的对象)

您可以使用循环并使用以下内容构建字符串:

var sb = new StringBuilder();
foreach (var obj in list)
{
    sb.AppendLine(obj.name);
}
MessageBox.Show(sb.ToString(), "Playerlist");

或者将方法覆盖ToString()到您的类并让您的代码保持原样:

public class RootObject
{
    public string endpoint { get; set; }
    public int id { get; set; }
    public List<string> identifiers { get; set; }
    public string name { get; set; }
    public int ping { get; set; }

    public override string ToString()
    {
        return name;
    }
}

推荐阅读