在使用多说后,想把数据导入到本地数据库。多说提供了api,导出的是json格式的数据,要对其作相应处理即可导入到数据库。
JSON 语法是 JavaScript 对象表示法语法的子集。
数据在名称/值对中:名称是字符串,使用双引号表示。
值可以是:数字(整数或浮点数),字符串(在双引号中),数组(在方括号中),对象(在花括号中),true/false/null。
数据由逗号分隔。
花括号保存对象:对象可以包含各种数据,包括数组。
方括号保存数组:数字可以包含对象。
例子:首先得到的json数据:
_ueditor_page_break_tag_
再针对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数据,转换到对象。