Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表C中的自定义字符串格式#_C#_Json_Format - Fatal编程技术网

C# 列表C中的自定义字符串格式#

C# 列表C中的自定义字符串格式#,c#,json,format,C#,Json,Format,我有一个包含数据列表的类,如下所示: public List<Data> data; public class Data { public String KEY; public String VALUE; } 公共列表数据; 公共类数据{ 公共字符串密钥; 公共字符串值; } 我的问题是:如何获取下一个包含列表数据的格式字符串 {“key1”:[“value1”],“key2”:[“value2”]} 我尝试使用Newtonsoft.Json.JsonConve

我有一个包含数据列表的类,如下所示:

public List<Data> data;

public class Data {
    public String KEY;
    public String VALUE;
}
公共列表数据;
公共类数据{
公共字符串密钥;
公共字符串值;
}
我的问题是:如何获取下一个包含
列表数据的格式字符串

{“key1”:[“value1”],“key2”:[“value2”]}

我尝试使用Newtonsoft.Json.JsonConvert,但得到以下字符串:


[{“KEY”:“key1”,“VALUE”:“value1”},{“KEY”:“key1”,“VALUE”:“value1”}]

如果您想轻松使用Json.Net,您只需先将
列表
转换为
字典

var dict = data.ToDictionary<string, string[]>(d => d.KEY, d => new[] { d.VALUE });
JsonConvert.SerializeObject(dict);
var dict=data.ToDictionary(d=>d.KEY,d=>new[]{d.VALUE});
序列化对象(dict);
这是一个“对一个拿着锤子的人来说,每个问题都像钉子”的应用程序! 诚然,贾斯汀的答案是最合适的,但我不介意介绍这项工作。(注意:未测试,可能需要一些故障排除)

私有字符串convertToJSON(列表数据)
{
StringBuilder sb=新的StringBuilder();
字符串str;
int i=0;
sb.Append(“{”);//开始

对于(i=0;i
String.Format(“{{{0}\”:[\“{1}\”],\“{2}\”:[\“{3}\”]}],key1,value1,key2,value2);
@chouaib但这是一个列表,这个列表有多个值和键,我需要用“,”是”分隔所有数据,但这个返回值
[{KEY:[{“KEY”:“key1”,“VALUE:”,{KEY:“key1”,“VALUE:”和
首先转换为字典应该可以防止这种情况(序列化字典应该生成一个JSON对象)。@justiniessner,实际上它应该是
data.ToDictionary(d=>d.KEY,d=>new[]{d.VALUE})
生成所需的结果。我得到以下错误:
System.Collections.Generic.List没有System.Linq.Enumerable.ToDictionary(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer)的“ToDictionary和最佳扩展方法重载”定义'有一些无效参数。
@Manux22-抱歉。进行了更新,但忘记更新泛型类型参数。请重试。谢谢,但此解决方案是“积极的”"首先,我尝试用JavaDimiFrimy的代码,应该<代码>接受< /代码>贾斯廷的答案,但不这不是攻击性XD,它不是合适的答案,但不是更慢吗?我很好奇知道哪种方法是最慢的方法,在你用你的真实数据尝试它们之后,尽管我没有考虑到你的问题。这并不是说速度很关键,p.s我根本不懂JSON,我只是一个
C
程序员,在大多数情况下,我都会用我所知道的
C
来解决我的问题
private string convertToJSON(list<Data> data)
{
  StringBuilder sb = new StringBuilder();
  string str;
  int i=0;

  sb.Append("{");   // start 
  for(i=0; i<data.Count-1; i++)
  {
    // add each pair of data with a comma
    str = String.Format("\"{0}\":[\"{1}\"], ", data[i].key, data[i].value);
    sb.Append(str);
  }

  // add the last pair of data
  sb.Append("\"{0}\":[\"{1}\"]", data[i+1].key, data[i+1].value);
  sb.Append("}"); // close the sequence

  string Result = sb.ToString(); // resulting string
  return Result;
}