JSON.net格式输出如我所需



嘿,我写了以下JSON输出,就像我需要它由JSON.net输出一样:

{"DATA": {
  "firstName": "Bill",
  "lastName": "Gates",
  "emailAddress": "billgates@microsoft.com",
  "phoneNum": "5552349856",
  "image": "https://upload.wikimedia.org/wikipedia/commons/1/19/Bill_Gates_June_2015.jpg",
  "title": "CEO",
  "clocked": [
      {"date": "12-13-2015 17:00:00", "type": "OUT"},
      {"date": "12-13-2015 13:00:00", "type": "IN"},
      {"date": "12-12-2015 14:30:00", "type": "OUT"},
      {"date": "12-12-2015 10:00:00", "type": "IN"},
      {"date": "12-11-2015 17:00:00", "type": "OUT"},
      {"date": "12-11-2015 13:00:00", "type": "IN"},
      {"date": "12-10-2015 10:30:00", "type": "OUT"},
      {"date": "12-10-2015 08:00:00", "type": "IN"},
      {"date": "12-09-2015 13:45:00", "type": "OUT"},
      {"date": "12-09-2015 09:00:00", "type": "IN"},
      {"date": "12-08-2015 12:30:00", "type": "OUT"},
      {"date": "12-08-2015 10:00:00", "type": "IN"},
      {"date": "12-07-2015 13:45:00", "type": "OUT"},
      {"date": "12-07-2015 08:30:00", "type": "IN"},
      {"date": "12-06-2015 12:10:00", "type": "OUT"},
      {"date": "12-06-2015 09:40:00", "type": "IN"},
      {"date": "12-05-2015 18:00:00", "type": "OUT"},
      {"date": "12-05-2015 14:10:00", "type": "IN"},
      {"date": "12-04-2015 12:30:00", "type": "OUT"},
      {"date": "12-04-2015 08:00:00", "type": "IN"}
  ]
}
}

使用C#JSON对在线生成器进行分类,我得到了以下类:

public class Clocked
{
    public string date { get; set; }
    public string type { get; set; }
}
public class DATA
{
    public string firstName { get; set; }
    public string lastName { get; set; }
    public string emailAddress { get; set; }
    public string phoneNum { get; set; }
    public string image { get; set; }
    public string title { get; set; }
    public List<Clocked> clocked { get; set; }
}
public class RootObject
{
    public DATA DATA { get; set; }
}

我正在通过SQL服务器查询获得这些json字符串所需的数据:

 try
 {
     string connetionString = @"Data Source=(localdb)v11.0;Initial Catalog=stantecUsers;Integrated Security=True";
     string sql = "SELECT * " +
                  "FROM [stantecUsers].[dbo].[users] AS stantecUsers " +
                  "INNER JOIN [stantecUsers].[dbo].[usersData] AS stantecUserData " +
                  "ON stantecUsers.link2Data = stantecUserData.link2Data" +
                  "WHERE stantecUsers.phoneNum = '" + phoneNum + "'" +
                  "ORDER BY [stantecUsers].ID ASC;";
     SqlConnection connection;
     SqlCommand command;
     connection = new SqlConnection(connetionString);
     try
     {
        connection.Open();
        command = new SqlCommand(sql, connection);
        SqlDataReader read = command.ExecuteReader();
        while (read.Read())
        {
           Debug.WriteLine(read["firstName"].ToString());
        }
        read.Close();
        command.Dispose();
        connection.Close();
     }
     catch (Exception ex)
     {
         Debug.WriteLine("Can not open connection ! " + ex.Message);
     }
   }
   catch (SqlException e)
   {
        return e.Message;
   }
}

那么,我该如何让JSON.net的输出看起来像我的模型一样呢?

您需要创建一个与您想要获得的JSON结构匹配的对象,然后您可以序列化该对象以获得最终的JSON。代码可能看起来类似于此:

string finalJSON = "";
try
{
   connection.Open();
   command = new SqlCommand(sql, connection);
   SqlDataReader read = command.ExecuteReader();
   // Create a new object that matches the structure of the JSON file.
   var root = new RootObject
   {
       DATA = new DATA { clocked = new List<Clocked>() }
   };
   while (read.Read())
   {
      root.DATA.firstName = read["firstName"].ToString();
      root.DATA.lastName = read["lastName"].ToString();
      // Continue with the other attributes...
      root.DATA.clocked.Add(new Clocked {date = read["date"].ToString(), type = read["type"].ToString() });
   }
   // Serialize the object using JSON.Net.
   finalJSON = JsonConvert.SerializeObject(root);
   read.Close();
   command.Dispose();
   connection.Close();
}

相关内容

  • 没有找到相关文章

最新更新