在C#中将数组序列化为JSON

本文关键字:序列化 JSON 数组 | 更新日期: 2023-09-27 18:20:21

如何初始化并向c#中的json数组添加动态值?我想将每个值添加到foreach循环中的json数组中。

foreach (DataRow drow in mydeal.Rows)
{
    // add json array values here in the key-value format//
}

在C#中将数组序列化为JSON

对于数组,创建一个数组并对其进行序列化。对于dictionary,要么创建一个dictionary(键值)并自定义序列化(在Stack Overflow中介绍),要么使用动态对象,例如:

https://weblog.west-wind.com/posts/2012/Aug/30/Using-JSONNET-for-dynamic-JSON-parsing

或者只查找同样覆盖在堆栈溢出上的serialize dynamic object json

如果您根本不知道如何序列化为JSON,请查看ASP/WebAPI教程,其中有很多教程。

为了分享我使用DataTable传输数据和反馈Json格式的方法,希望这是处理问题的好方法

public IHttpActionResult PostBanners(xx id)
        {
            string queryString = "select top 2 a.point,a.seq_banner  from Banners as a left join RelationCountryBanner as b on a.seq_banner = b.seq_file ";
           //string queryString = id.str;
            DataTable dt = new DataTable();
            using (SqlConnection con = new SqlConnection())
            {
                if (ConfigurationManager.ConnectionStrings["DefaultConnection"] != null)
                {
                    con.ConnectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString();
                }
                else
                {
                    con.ConnectionString = "Data Source=******;Initial Catalog=B2CGlobal2010;Persist Security Info=True;User ID=*******;Password=****";
                }
                using (SqlCommand cmd = new SqlCommand(queryString.ToString(), con))
                {
                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    con.Open();
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dt);
                    List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
                    Dictionary<string, object> row;
                    foreach (DataRow dr in dt.Rows)
                    {
                        row = new Dictionary<string, object>();
                        foreach (DataColumn col in dt.Columns)
                        {
                            row.Add(col.ColumnName, dr[col]);
                        }
                        rows.Add(row);
                    }
                    DataTable xx = (DataTable)JsonConvert.DeserializeObject(serializer.Serialize(rows), (typeof(DataTable)));
                   // return Ok(xx);
                    return Ok(serializer.Serialize(rows));
                }
            }
            return NotFound();
        }