淺學JSON——Json.NET之首次試手

首次遭遇Json格式,緣由項目中用到Json數據,需要進行解析,爲此,將Json數據轉爲了自己較爲熟悉的DataTable格式,以此展示至DataGridView中,驗證是否成功。

直接上代碼:

/// <summary>
/// JSON數據轉換爲datatable類型數據
/// </summary>
/// <param name="strjson">JSON數據字符串</param>
/// <returns>轉換爲DataTable類型的JSON數據</returns>
private DataTable JSONToDataTable(string strjson)
{
    DataTable dt=new DataTable();
    DataColumn dc;
    DataRow dr;

    #region 添加列
    //用於添加列
    JsonReader jrcolumn = new JsonTextReader(new StringReader(strjson));

    bool hascolumn = false; //當前列名是否存在
    while (jrcolumn.Read())
    {
        //判斷當前值是否是字段名
        if (jrcolumn.TokenType.ToString() == "PropertyName")
        {
            //判斷當前列名是否在datatable中已存在
            foreach (DataColumn column in dt.Columns)
            {
                if (column.ColumnName == jrcolumn.Value.ToString())
                {
                    hascolumn = true;    //存在相同名稱的列
                    break;
                }
            }

            //存在相同列,表示全部結束
            if (hascolumn == true)
            {
                break;
            }

            //添加新列
            dc = new DataColumn();
            dc.ColumnName = jrcolumn.Value.ToString();
            jrcolumn.Read();
            dc.DataType = System.Type.GetType(jrcolumn.ValueType.ToString()); //列類型
            dt.Columns.Add(dc);
        }
    }
    #endregion

    #region 添加數據記錄
    //用於添加記錄
    JsonReader jrrow = new JsonTextReader(new StringReader(strjson));

    dr = dt.NewRow();
    while (jrrow.Read())
    {
        if (jrrow.TokenType.ToString() == "PropertyName")
        {
            string columnname = jrrow.Value.ToString();
            jrrow.Read();
            dr[columnname] = jrrow.Value.ToString();
            if (columnname == dt.Columns[dt.Columns.Count - 1].ColumnName.ToString())
            {
                dt.Rows.Add(dr);
                dr = dt.NewRow();
            }
        }
    }
    #endregion

    return dt;
}

析:先獲取列名——json數據的字段名稱,然後獲取具體數據。此段代碼未對一次處理,後期將進一步改進。

成功時候,又以相同方式完成將數據加到ListView中。

完整項目文件下載:華爲網盤下載119網盤下載

 


標籤: JSONJson.NET
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章