从数据库C#正确json

时间:2018-03-20 08:04:15

标签: c# arraylist

我有一些来自数据库的字符串

  

email1 link1 data1

     

email1 link1 data2

     

email1 link2 data3

     

email2 link3 data4

我怎样才能得到这样的json?

{log:[
{email: email1, link:link1, data:[data1,data2]},
{email: email1, link:link2, data:[data3]},
{email: email2, link:link3, data:[data4]}
]}

我不知道如何为给定字段创建日期数组

2 个答案:

答案 0 :(得分:3)

您可以尝试首先在对象树中加载数据,然后使用像Json.Net这样的json转换器。但是您需要为数据提供一致的格式。类似下面的代码:

class Data{
//to be more defined maybe a string could be a start
string value;
}

class Log{
  string email;
  string link;
  List<Data> data;
}

List<Log> myLog = new List<Log>();
// load your "log" data into this list

string json = JsonConvert.SerializeObject(myLog);

答案 1 :(得分:2)

第一个答案的回答略有不同。

假设您已经能够将数据库中的记录存入此类。

public class Log
{
    public string Email { get; set; }

    public string Link { get; set; }

    public string Data { get; set; }
}

然后,您可以使用以下LINQ语法通过电子邮件对日志进行分组和链接。

var logs = new List<Log>(); // The list should come from the records in the database.
var result = new
{
    Log = logs.GroupBy(x => new { x.Email, x.Link })
            .Select(y => new { y.Key.Email, y.Key.Link, Data = y.Select(z => z.Data) })
};

并使用Newtonsoft.Json对其进行序列化。

var json = JsonConvert.SerializeObject(result);