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

时间:2015-02-17 00:39:33

标签: c# json format

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

public List<Data> data;

public class Data {
    public String KEY;
    public String VALUE;
}

我的问题是:如何获取包含 List<Data> 数据的下一个格式字符串?

{"key1":["value1"],"key2":["value2"]}

我尝试使用Newtonsoft.Json.JsonConvert,但我收到了这个字符串:

[{"KEY":"key1","VALUE":"value1"},{"KEY":"key1","VALUE":"value1"}]

2 个答案:

答案 0 :(得分:2)

如果您想轻松使用Json.Net,只需先将List<Data>转换为Dictionary<string, string>

var dict = data.ToDictionary<string, string[]>(d => d.KEY, d => new[] { d.VALUE });
JsonConvert.SerializeObject(dict);

答案 1 :(得分:0)

这是对一个有锤子的男人的应用,每个问题看起来都像一个钉子&#34;! 从根本上说,贾斯汀的答案是最合适的,但我不介意介绍这项工作。 (P.S:未经测试可能需要一些故障排除)

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;
}

然后,只需将其称为string json = convertToJSON(data);