繁体   English   中英

如何转换键值对json字符串响应中的字符串列表?

[英]How to convert list of string in key value pair json string response?

下面是我的字符串列表:

List<string> mylist = new List<string>(new string[] { "element1", "element2", "element3" });

现在我想以下面的输出形式将上面的列表返回到Web服务:

{
 "element1" : "",
 "element2" : "",
 "element3" : "",
}

我想在我的网站上显示如下输出:

{
 "element1" : "",
 "element2" : "",
 "element3" : "",
}

这就是我现在正在做的事情:

 string output = "{" + Environment.NewLine;
            foreach (var item in myList)
            {
                output += $"\"{item}\" : \"\"," + Environment.NewLine;
            }
            output = output.Remove(output.Length - 1) + "}";

但是当我有40-50个记录时,我的循环将运行40-50次,我试图避免。

我甚至试图用这个:

 string output = JsonConvert.SerializeObject(myList); 

但上面没有给出我想要的确切输出格式。

任何人都可以建议我做任何更好的方法,这将避免forloop和减少代码产生预期的输出?

这应该做你想要的:

string output = JsonConvert.SerializeObject(
                    mylist.ToDictionary(key => key, v => string.Empty));

使用ToDictionary()我们从列表中创建一个Dictionary<T1, T2> (在您的情况下为Dictionary<string, string> )。 我们使Key等于列表中的项, Value只是一个空字符串。

在这里小提琴

编辑如果您想要缩进格式,请将第二个参数传递给SerializeObject:

string output = JsonConvert.SerializeObject(
                    mylist.ToDictionary(key => key, v => string.Empty)
                    Formatting.Indented);

您可以简单地使用.NET内置类,而无需任何第三方库: 使用JavaScriptSerializer

var list = new List<string>() { "element1", "element2", "element3" };
var dic = list.ToDictionary(k => k, v => string.Empty);
Console.WriteLine(new JavaScriptSerializer().Serialize(dic));

在此输入图像描述

注意不要忘记添加System.Web.Extensions作为项目的引用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM