0

「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"}  ]
4

1 に答える 1

0

あなたのコードは、あなたが達成しようとしているものに非常に近いようです。DataRows に存在するすべての列が必要な場合は、foreach ループでテーブルのすべての列を反復処理する必要があります。(わかりやすくするために、ここでDataTableの名前をtableに変更し、 DataRowの名前をrowに変更したことに注意してください。)

            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();
            }

この例では、ソース データが null の場合に空の文字列を書き出すことに注意してください。null 値を完全に除外する場合は、プロパティ名と値を書き込む前に (row[col.ColumnName] == null) のチェックを実行します。

于 2013-02-27T15:40:19.693 に答える