簡體   English   中英

如何將數據表轉換為json

[英]how to datatable convert into json

我有以下json代碼,有任何庫和方法,我使用mydatatable值轉換為json因為我發布數據json格式。 很難添加這些類型的參數。

   using (var content = new StringContent("{  \"vehicles\": [    {      \"vehicle_type\": \""+ vehicale_type +"\",      \"vehicle_id\": \"" +vehicle_id+"\"," +
                   "\"vehicle_plate\": \"" +vehicle_plate+ "\",      \"latitude\": "+latitude +"+,      \"longitude\": "+longitude+",      \"eta_minutes\": null, " +
                   "\"make\": \"null\",      \"model\": \""+carModel+"\",      \"color\": \"Black\",      \"status\": \""+status+"\",  " +
                   "\"driver_id\": \"" + driver_id + "\",      \"driver_phone\": \"" + driver_phone + "\",      \"driver_first_name\": \"" + driver_first_name + "\",   " +
                   "\"driver_last_name\": \"" + driver_last_name + "\",      \"direction\": {        \"kph\": 20,        \"heading\": 90      }    },  " +
                   "{      \"vehicle_type\": \"" + vehicale_type2 + "\",      \"vehicle_id\": \""+vehicle_id2+"\",      \"vehicle_plate\": \""+vehicle_plate2+"\",      \"latitude\":"+latitude2+",  " +
                   "\"longitude\":" + longitude2 + ",      \"eta_minutes\": null,      \"make\": \"null\",      \"model\": \"" + carModel2+ "\",  " +
                   "\"color\": \"Black\",      \"status\": \""+status2+"\",      \"driver_id\": \""+driver_id2+"\",      \"driver_phone\": \""+driver_phone2+"\",   " +
                   "\"driver_first_name\": \"" + driver_first_name2+ "\",      \"driver_last_name\": \"" + driver_last_name2 + "\",      \"direction\": {        \"kph\": 20,     " +
                   "\"heading\": 90      }    }  ]}", System.Text.Encoding.Default, "application/json"))
               {
                   using (var response = await httpClient.PostAsync("{supplier_id}/availability?version=2", content))
                   {
                       string responseData = await response.Content.ReadAsStringAsync();
                   }
               }

按照以下步驟以非常有效和更好的方式完成此任務:

  1. 創建一個具有要求發送的必需屬性的類。

     //for example public class Request { public List<Vehicle> vehicles { get; set; } } public class Vehicle { public string vehicle_type {get; set;} } 
  2. 將值分配給對象

     Request request =new Request(); request.vehicles = new List<Vehicle>(); // and so on 
  3. 使用Newtonsoft.Json將對象序列化為:

     var json = JsonConvert.SerializeObject(request); 
  4. 用json調用你的請求

     using (var response = await httpClient.PostAsync("{supplier_id}/availability?version=2", json)) { string responseData = await response.Content.ReadAsStringAsync(); } 

這將有助於在json字符串中格式化您的數據表值。 傳遞你的實際數據表對象和方法將返回json的字符串。

public string DataTableToJsonObj(DataTable dt)
{
    DataSet ds = new DataSet();
    ds.Merge(dt);
    StringBuilder JsonString = new StringBuilder();
    if (ds != null && ds.Tables[0].Rows.Count > 0)
    {
        JsonString.Append("[");
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            JsonString.Append("{");
            for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
            {
                if (j < ds.Tables[0].Columns.Count - 1)
                {
                    JsonString.Append("\"" + ds.Tables[0].Columns[j].ColumnName.ToString() + "\":" + "\"" + ds.Tables[0].Rows[i][j].ToString() + "\",");
                }
                else if (j == ds.Tables[0].Columns.Count - 1)
                {
                    JsonString.Append("\"" + ds.Tables[0].Columns[j].ColumnName.ToString() + "\":" + "\"" + ds.Tables[0].Rows[i][j].ToString() + "\"");
                }
            }
            if (i == ds.Tables[0].Rows.Count - 1)
            {
                JsonString.Append("}");
            }
            else
            {
                JsonString.Append("},");
            }
        }
        JsonString.Append("]");
        return JsonString.ToString();
    }
    else
    {
        return null;
    }
}  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM