使用 C# 的 mysql 数据创建 Json 文件

Posted

技术标签:

【中文标题】使用 C# 的 mysql 数据创建 Json 文件【英文标题】:Creating Json file with C# of mysql data 【发布时间】:2019-12-08 15:05:41 【问题描述】:

我试图创建一个 mysql 数据库的 json 文件,它与下面的代码一起工作,但我不知道如何给他们一个“标题”,我需要在我需要的 android studio 中使用 volley 从这个 json 中获取数据: **这只是一个示例,让您知道我需要哪个部分,我不需要“颜色”**

 
     **"colors"**: [//   i need this section here but with my code i couldnt 
   //get this.
    
      "color": "black",
      "category": "hue",
      "type": "primary",
      "code": 
       "rgba": [255,255,255,1],
       "hex": "#000"
      
  

android studio 中的 VOLLEY 这样做是为了获取数据:

JSONArray jsonArray=response.getJSONArray("colors");

这是我在 C# 中的代码,用于在本地主机上创建 Json 文件

namespace MySqlServerDemo

    public partial class WebForm1 : System.Web.UI.Page
    


        protected void Page_Load(object sender, EventArgs e)
        

            Response.Write( ListJson() );

        

        //    [WebMethod]
        public static string ListJson()
        
            DataSet ds = new DataSet();

            MySqlConnection con = new MySqlConnection("server=localhost;user id=root;database=studentdetails;password=MYPASSWORD");
            con.Open();
            MySqlCommand cmd = new MySqlCommand("select * from STUDENTS", con);
            MySqlDataAdapter da = new MySqlDataAdapter(cmd);


            da.Fill(ds);

                List<students> studentDetails = new List<students>();
                studentDetails = ConvertDataTable<students>(ds.Tables[0]);

            javascriptSerializer js = new JavaScriptSerializer();
                return js.Serialize(studentDetails);

            

        public class students
        
            public string firstname  get; set; 
            public string surname  get; set; 

        


        private static List<T> ConvertDataTable<T>(DataTable dt)
        
            List<T> data = new List<T>();
            foreach (DataRow row in dt.Rows)
            
                T item = GetItem<T>(row);
                data.Add(item);
            
            return data;
        
        private static T GetItem<T>(DataRow dr)
        
            Type temp = typeof(T);
            T obj = Activator.CreateInstance<T>();

            foreach (DataColumn column in dr.Table.Columns)
            
                foreach (PropertyInfo pro in temp.GetProperties())
                
                    if (pro.Name == column.ColumnName)
                        pro.SetValue(obj, dr[column.ColumnName], null);
                    else
                        continue;
                
            
            return obj;
        
    

【问题讨论】:

你能显示你在哪里转换你的颜色类吗?您显示的代码加载了一类学生 这只是一个例子,让您知道我需要哪个部分,所以我的部分是这样的:student:[ firstname: jacob surname: hello] 你必须让你的类可序列化。例如,您的班级学生包含一个对象 StudentInfo,该对象具有您要显示的所有属性,然后使用您的班级声明上方的标题 [Serializable] 使两者都可序列化 你能不能写一下如何做到这一点我不确定我应该在哪里写“可序列化” 【参考方案1】:

您可以像这样简单地编写一个包装类。

public class ContainerClass 
    public List<students> Students get;set;

并将其序列化。

所以你最终会在你的 ListJson 方法中做的是:

                var studentDetails = new ContainerClass();
                studentDetails.Students = ConvertDataTable<students>(ds.Tables[0]);

                JavaScriptSerializer js = new JavaScriptSerializer();
                return js.Serialize(studentDetails);

这有意义吗?

【讨论】:

这很有效,谢谢!但我无法在 android 中获取数据,但这将是另一个问题的主题。

以上是关于使用 C# 的 mysql 数据创建 Json 文件的主要内容,如果未能解决你的问题,请参考以下文章

C# - 将 JSON 存储到 MySQL 数据库中 [重复]

将 MySql 数据库中的 JSON 列映射到 Web Api 中的 C# 类

Mysql基础第三天,创建罗斯文数据库

c#处理json数据最好的方式,没有之一。

MySQL数据类型 - JSON数据类型

在 PHP 中使用“POST”通过 C# 中的 JSON 检索数据库信息