在使用多说后,想把数据导入到本地数据库。多说提供了api,导出的是json格式的数据,要对其作相应处理即可导入到数据库。

JSON 语法是 JavaScript 对象表示法语法的子集。

数据在名称/值对中:名称是字符串,使用双引号表示。

值可以是:数字(整数或浮点数),字符串(在双引号中),数组(在方括号中),对象(在花括号中),true/false/null。

数据由逗号分隔。

花括号保存对象:对象可以包含各种数据,包括数组。

方括号保存数组:数字可以包含对象。 

例子:首先得到的json数据:

_ueditor_page_break_tag_

list.txt

再针对json数据建数据模型:

public class DSMsg
    {
        public DSMsg() { }
        public List<ResponseItems> response { get; set; }
        public string code { get; set; }
    }
    public class ResponseItems
    {
        public ResponseItems() { }
        public string log_id { get; set; }
        public string user_id { get; set; }
        public string action { get; set; }
        public MetaItems meta { get; set; }
        public string date { get; set; }
    }
    public class MetaItems
    {
        public MetaItems() { }
        public string post_id { get; set; }
        public string thread_id { get; set; }
        public string thread_key { get; set; }
        public string author_id { get; set; }
        public string author_key { get; set; }
        public string author_name { get; set; }
        public string author_email { get; set; }
        public string author_url { get; set; }
        public string ip { get; set; }
        public string created_at { get; set; }
        public string message { get; set; }
        public string status { get; set; }
        public string type { get; set; }
        public string parent_id { get; set; }
        public string agent { get; set; }
    }

再将数据转换成对象:

string JsonTemp = HtmlTransfer.GetJsonData("http://api.duoshuo.com/log/list.json?short_name=daidaiwa&secret=34c170ec76fd35341ac6f386d08d3e56");
            DSMsg dsMessage = JsonHelper.JSONToObject<DSMsg>(JsonTemp);
            if (dsMessage.code == "0")
            {
                //数据处理 
            }

数据处理用到的方法: 

//读取网页内容(UTF-8)
        public static string GetJsonData(string url)
        {
            System.Net.WebRequest wReq = System.Net.WebRequest.Create(url);
            System.Net.WebResponse wResp = wReq.GetResponse();
            System.IO.Stream respStream = wResp.GetResponseStream();
            StreamReader sr = new StreamReader(respStream, System.Text.Encoding.UTF8);
            string input = sr.ReadToEnd();
            sr.Close();
            return input;
        }
 /// <summary> 
        /// JSON文本转对象,泛型方法 
        /// </summary> 
        /// <typeparam name="T">类型</typeparam> 
        /// <param name="jsonText">JSON文本</param> 
        /// <returns>指定类型的对象</returns> 
        public static T JSONToObject<T>(string jsonText)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            try
            {
                return jss.Deserialize<T>(jsonText);
            }
            catch (Exception ex)
            {
                throw new Exception("JSONHelper.JSONToObject(): " + ex.Message);
            }
        }

最后一个方法是最主要的:处理json数据,转换到对象。

 

最后修改:2013 年 08 月 30 日
如果觉得我的文章对你有用,请随意赞赏