如何将 json 解析为列表中的字典,然后打印为文本

我正在使用 Brian Rogers 提供的示例代码如何使用 JSON.NET 反序列化为嵌套/递归字典和列表?将下载的 JSON 文件转换为字典列表(因为我知道它是什么格式),然后将列表中字典的值作为文本返回:


public static class JsonHelper

{

    public static object Deserialize(string json)

    {

        return ToObject(JToken.Parse(json));

    }


    private static object ToObject(JToken token)

    {

        switch (token.Type)

        {

            case JTokenType.Object:

                return token.Children<JProperty>()

                            .ToDictionary(prop => prop.Name,

                                          prop => ToObject(prop.Value));


            case JTokenType.Array:

                return token.Select(ToObject).ToList();


            default:

                return ((JValue)token).Value;

        }

    }

}


public partial class MainWindow : Window

{

    public MainWindow()

    {

        InitializeComponent();

    }


    private void btn1_Click(object sender, RoutedEventArgs e)

    {

        string wordType = "verb";

        var url = "http://api.wordnik.com:80/v4/word.json/" + txtBox.Text + "/definitions?limit=5&partOfSpeech=" + wordType + "&api_key=aaaa946871985c2eb2004061aba0695e00190753d6560ebea";

        var jsontext = new WebClient().DownloadString(url);

        object worddata = JsonHelper.Deserialize(jsontext);


        txtBlock.Text = worddata[0];

    }

}

主要关注的是一个worddata变量。它是某种对象,但不是字典列表。如果有任何帮助,我尝试打印worddata到控制台并显示System.Collections.Generic.List'1[System.Object].


本质上,我正在尝试执行该json.load函数在 python 中所做的事情。


牧羊人nacy
浏览 255回答 2
2回答

月关宝盒

您正在打印一个对象列表,因此输出是正常的。如果您想要 Json 表示,请再次将其转换为 JsontxtBloct.Text&nbsp;=&nbsp;JsonConvert.SerializeObject(worddata[0])或者,如果要将列表打印为字符串,请遍历它并打印对象
打开App,查看更多内容
随时随地看视频慕课网APP