将数据显示到Debug Console

时间:2016-09-06 09:18:30

标签: c# visual-studio dictionary uwp

我为UWP编写应用程序

我有这段代码

var p = await wc.GetProducts(new Dictionary<string, string>() {
            { "orderby", "id" }, { "filter[search]", "1884" }
             });

我尝试像这样显示字典中的数据。

Debug.WriteLine("There");

        Debug.WriteLine(p.products);

但它不起作用。

如何显示字典数据?

3 个答案:

答案 0 :(得分:0)

To read a Dictionary --
foreach(KeyValuePair<string,string> kvp in p){
     Console.WriteLine(kvp.Key);
     Console.WriteLine(kvp.Value);
 }
 foreach(string key in p.Keys){
    Console.WriteLine(key);
    Console.WriteLine(p[key]);//value
 }
foreach(string value in p.Values){
    Console.WriteLine(value);
}

但问题是P是一个叫做产品的类:

Product p = new Product()
        {
            name = "test product 8",
            title = "test product 8",
            description = "test product 8",
            price = 8.0M
        };

您可以访问p的属性:

p.name;
p.title;
p.description;
p.price;

Debug.WriteLine(p.name);
Debug.WriteLine(p.title);//etc

答案 1 :(得分:0)

GetProducts()返回哪种类型?

如果它只是Dictionary,您可以执行以下操作:

foreach(var key in p.Keys)
{
    Debug.WriteLine(key);
}

答案 2 :(得分:0)

使用以下扩展类(需要Newtonsoft JSON库),您可以获得任何对象的JSON字符串,无论是否具有可读格式。

使用该类获取可读的JSON字符串;

var p = await wc.GetProducts(new Dictionary<string, string>() {
    { "orderby", "id" }, { "filter[search]", "1884" }
    });

var jsonString = p.ToFormattedJsonString();

Debug.WriteLine(jsonString);

使用该类获取没有格式的普通JSON字符串;

var p = await wc.GetProducts(new Dictionary<string, string>() {
    { "orderby", "id" }, { "filter[search]", "1884" }
    });

var jsonString = p.ToJsonString();

Debug.WriteLine(jsonString);

您还可以通过添加自己的扩展方法(如下所示)来简化上述内容;

public static void ToDebug(this object data)
{
    Debug.WriteLine(data.ToFormattedJsonString());
}

扩展类;

using System.Text;
using Newtonsoft.Json;

namespace System
{
    public static class JsonExtensions
    {
        public static string ToFormattedJsonString(this object obj, bool indentWithTab)
        {
            return indentWithTab
                ? ToFormattedJsonString(obj, "\t")
                : ToFormattedJsonString(obj);
        }

        public static string ToFormattedJsonString(this object obj, string indentString = "  ")
        {
            return FormatJson(obj.ToJsonString(), indentString);
        }

        public static string ToJsonString(this object obj)
        {
            return JsonConvert.SerializeObject(obj);
        }

        public static T DeserializeJsonString<T>(this string jsonString)
        {
            return JsonConvert.DeserializeObject<T>(jsonString);
        }

        private static string FormatJson(string jsonString, string indentString)
        {
            var indent = 0;
            var quoted = false;
            var builder = new StringBuilder();
            for (var i = 0; i < jsonString.Length; i++)
            {
                var character = jsonString[i];
                switch (character)
                {
                    case '{':
                    case '[':
                        builder.Append(character);
                        if (!quoted)
                        {
                            builder.AppendLine();
                            builder.RepeatAppend(++indent, indentString);
                        }
                        break;
                    case '}':
                    case ']':
                        if (!quoted)
                        {
                            builder.AppendLine();
                            builder.RepeatAppend(--indent, indentString);
                        }
                        builder.Append(character);
                        break;
                    case '"':
                        builder.Append(character);
                        bool escaped = false;
                        var index = i;
                        while (index > 0 && jsonString[--index] == '\\')
                            escaped = !escaped;
                        if (!escaped)
                            quoted = !quoted;
                        break;
                    case ',':
                        builder.Append(character);
                        if (!quoted)
                        {
                            builder.AppendLine();
                            builder.RepeatAppend(indent, indentString);
                        }
                        break;
                    case ':':
                        builder.Append(character);
                        if (!quoted)
                            builder.Append(" ");
                        break;
                    default:
                        builder.Append(character);
                        break;
                }
            }
            return builder.ToString();
        }

        public static StringBuilder RepeatAppend(this StringBuilder builder, int count, string format,
            params object[] parameters)
        {
            if (count <= 0 || string.IsNullOrEmpty(format))
                return builder;

            for (int i = 0; i < count; i++)
            {
                builder.AppendFormat(format, parameters);
            }

            return builder;
        }
    }
}