【问题标题】:How to list a newtonsoft Jtoken or JObjects children in a listBox如何在列表框中列出 newtonsoft Jtoken 或 JObjects 子项
【发布时间】:2014-12-10 11:00:17
【问题描述】:

我有一个 json 文件,我将其读取为字符串,然后转换为作业。我通过选择它的一个子对象从这个对象中获得一个 JToken。

我想在列表框中列出这个 JTokens 子项。我认为,要做到这一点,我需要将 eJTOken 转换为 ListItem - 我该怎么做?如果有更好的替代方法,那么将有兴趣听到它!

    string filePath = @"C:\output.json";
    JObject json = JObject.Parse(System.IO.File.ReadAllText(filePath));
    JToken jsonFiles = json["Files"];
    jsonFilesListItem = ....

    JsonListBox.Items.Add(jsonFilesListItem);

【问题讨论】:

  • 这些孩子是否只是您想要显示的string 类型?
  • 是的,我只想显示子字符串。如果有办法在单独的变量中同时获取密钥和值,那么很好,如果没有,那么将两者都获取到一个字符串

标签: c# asp.net json listbox json.net


【解决方案1】:

假设json["Files"]包含一个简单的字符串数组,你所要做的就是使用一个foreach循环,如下例所示:

string jsonString = @"
{
    ""Files"": [
        ""foo.xml"",
        ""bar.txt"",
        ""baz.jpg"",
        ""quux.wav""
    ]
}";

JObject json = JObject.Parse(jsonString);
JToken jsonFiles = json["Files"];

foreach (string fileName in jsonFiles)
{
    JsonListBox.Items.Add(fileName);
}

【讨论】:

  • 如果没有foreach 使用LINQ,你将如何做同样的事情?
  • @JariTurkia 如果您想使用 LINQ,您可以执行以下操作:JsonListBox.Items.AddRange(json["Files"].Select(jt=>(string)jt).ToArray()); 但这取决于您所谈论的 ListBox 类型。上述内容适用于 WinForms,但对于 Asp.Net ListBox,您需要更改 Select 语句以将每个字符串包装在新的 ListItem 中。
猜你喜欢
  • 2021-12-26
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2018-10-10
  • 2020-07-21
相关资源
最近更新 更多