首页 > 解决方案 > 从 mysql 反序列化 json 字符串并使用 C#.net 存储到结构中

问题描述

 public struct bill
{
    public int id;
    public DateTime docdate;
    public ArrayList billDetails;//this will point the billitems structure
};
public struct billItems
{
    public int id;
    public int item;
    public int quantity;
    public string name;
    public double price;
    public ArrayList tax;
    public double discount;
  };
public ArrayList ReadBill(MySqlConnection connection)
    {
        
            ArrayList billList = new ArrayList( );
            ArrayList billdetailsList = new ArrayList();
            ArrayList details = new ArrayList();
            bill bills = new bill();
            DataTable dt = new DataTable();
            MySqlCommand cmd = new MySqlCommand("SELECT id,DATE_FORMAT(DATE, \"%d-%m-%Y\")docdate,contents FROM bills WHERE progress='Paid'; ", connection);
            dt.Load(cmd.ExecuteReader());
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                bills.id = Convert.ToInt32(dt.Rows[i]["id"].ToString());
                bills.docdate =Convert.ToDateTime(dt.Rows[i]["docdate"].ToString());
                bills.billDetails = new ArrayList();
                bills.billDetails = JsonConversion(dt.Rows[i]["contents"].ToString());//function to get deserialization of json string
                string str = "";
                foreach (var items in bills.billDetails)
                {
                    str= items.ToString();
                    string replacement = Regex.Replace(str, @"\t|\n|\r", "");//removing the spaces
                    replacement = Regex.Replace(replacement, " ", "");
                    details.Add(replacement);  //adding to arraylist 
                }
                bills.billDetails = details;// mapping arraylist to structure variable arraylist
//i want to assign this arralist to a structure which contains the details of billitems.
 }

    private ArrayList JsonConversion(string v)
    {
        int len;
        ArrayList testarray = new ArrayList();
        ArrayList resultarraylist = new ArrayList();
        testarray= JsonConvert.DeserializeObject<ArrayList>(v);
        string array = "";
        char[] splitter_securityIDs = { ',' };
        foreach (var items in testarray)
        {
                          
            array = items.ToString();
            array = array.Remove(0, 1);
            len = array.Length;
            array = array.Remove(len - 1, 1);
            resultarraylist.AddRange(array.Split(splitter_securityIDs));
            return resultarraylist;
        }
        return null;
    }
    

**我有两个结构法案和法案。bill 有 billdetails 数组列表,它将指向 billitems。我使用 select 查询从 mysql db 获得了一个 json 字符串。我得到了如下的 json 字符串作为记录。

[{"id":46,"item":1,"quantity":10,"name":"GARLIC CHEESE ROLL","price":"50.000","tax":{"name":null," price":50,"quantity":10,"percent":0,"amount":0,"contents":[]},"discount":0},{"id":47,"item":85 ,"数量":1,"名称":"PISTA SCOOPS","价格":"70.000","税":{"名称":null,"价格":70,"数量":1,"百分比" :0,"amount":0,"contents":[]},"discount":0}]

在此处输入图像描述 **这是我在选择查询后得到的数据表。

现在我想拆分这个细节 ("id":46,"item":1,"quantity":10,"name":"GARLIC CHEESE ROLL ","price":"50.000","tax":{" name":null,"price":50,"quantity":10,"percent":0,"amount":0,"contents":[]},"discount":0) 到称为 billitems 的结构。

请帮助我。提前致谢。

标签: c#mysqljson

解决方案


推荐阅读