如何通过Newtonsoft将某些值转换为json?

时间:2013-02-10 08:00:44

标签: c# json

我有代码返回“Datatable”,“Datatable”内容idstudent,avg,firstname,namecourse和date,这个“Datatable”内容更多行。

 DataTable row = mn.selectProgram("programStudent", attributes);
                JsonTrans responce = new JsonTrans();
                responce.Convert(row);
                 //if (row.Rows.Count != 0)
            //{
            //    foreach (DataRow result in row.Rows)
            //    {
            //        string idstudent = result["id"].ToString();

            //        string avgstudent = result["AVG"].ToString();
            //        string firstname = result["fname"].ToString();
            //        string date = result["date"].ToString();
            //        string namecourse = result["name"].ToString();


            //    }


            //}

我试试:

public string Convert(DataTable row)
        {
            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);
            JsonWriter jsonWriter = new JsonTextWriter(sw);
            jsonWriter.Formatting = Formatting.Indented;
            jsonWriter.WriteStartArray();
            if (row.Rows.Count != 0)
            {
                foreach (DataRow result in row.Rows)
                {
                    jsonWriter.WriteStartObject();
                    string idstudent = result["id"].ToString();
                    jsonWriter.WritePropertyName("id");
                    jsonWriter.WriteValue(idstudent);
                    jsonWriter.WriteEndObject();
                }

            }
            jsonWriter.WriteEndArray();
            jsonWriter.Close();
            sw.Close();

如何将此行转换为json,如:

    [ {idstudent:"value" ,avg :"value" , avg : "value",firstname :"value"}
      {idstudent:"value" ,avg :"value" , avg : "value",firstname :"value"}   
      {idstudent:"value" ,avg :"value" , avg : "value",firstname :"value"}  ]

1 个答案:

答案 0 :(得分:0)

您的代码看起来非常接近您要完成的任务。如果您希望DataRows中存在每个列,则foreach循环应遍历所有表的列。 (请注意,为了清晰起见,我已将 DataTable 名称更改为表格,将 DataRow 名称更改为。 )

            foreach (DataRow row in table.Rows)
            {
                jsonWriter.WriteStartObject();
                foreach (DataColumn col in table.Columns)
                {
                    jsonWriter.WritePropertyName(col.ColumnName);
                    jsonWriter.WriteValue((row[col.ColumnName] == null) ? string.Empty : row[col.ColumnName].ToString());
                }
                jsonWriter.WriteEndObject();
            }

请注意,此示例将写出源数据为空的空字符串。如果要完全保留空值,请在写入属性名称和值之前执行(row [col.ColumnName] == null)检查。