Json文件的写入读取
采用的Json.NET提供的API。
http://james.newtonking.com/projects/json-net.aspx
http://www.codeplex.com/json/
以下是demo代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Text;
using Newtonsoft.Json;
using com.zjpx.model;
using System.Collections;
using Newtonsoft.Json.Converters;
namespace web
{
public partial class testJson : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ConfigFileModel cfm = new ConfigFileModel(); //实体模型类
cfm.CreateDate = "2012-02-23";
cfm.FileName = "test.txt";
//可以操作集合
Hashtable ht = new Hashtable();
ht.Add("hs_name", "alex");
ht.Add("hs_pwd", "ggg");
//序列化
string js1 = JsonConvert.SerializeObject(cfm);
string js2 = JsonConvert.SerializeObject(ht);
Response.Write(js1);
Response.Write("<br/>");
Response.Write(js2);
//"{\"FileName\":\"test.txt\",\"CreateDate\":\"2012-02-23\"}"
//"{\"hs_pwd\":\"ggg\",\"hs_name\":\"alex\"}"
//反序列化
ConfigFileModel debc1 = JsonConvert.DeserializeObject<ConfigFileModel>(js1);
ConfigFileModel debc2 = JsonConvert.DeserializeObject<ConfigFileModel>(js2);
//找到服务器物理路径
//string serverAppPath = Request.PhysicalApplicationPath.ToString();
string serverAppPath = @"d:\";
//构成配置文件路径
string con_file_path =@""+ serverAppPath + @"config.json";
if (!File.Exists(con_file_path))
{
File.Create(con_file_path);
}
//把模型数据写到文件
using (StreamWriter sw = new StreamWriter(con_file_path))
{
try
{
JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new JavaScriptDateTimeConverter());
serializer.NullValueHandling = NullValueHandling.Ignore;
//构建Json.net的写入流
JsonWriter writer = new JsonTextWriter(sw);
//把模型数据序列化并写入Json.net的JsonWriter流中
serializer.Serialize(writer, cfm);
//ser.Serialize(writer, ht);
writer.Close();
sw.Close();
}
}
catch (Exception ex)
{
ex.Message.ToString();
}
//读取json文件
using (StreamReader sr = new StreamReader(con_file_path))
{
try
{
JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new JavaScriptDateTimeConverter());
serializer.NullValueHandling = NullValueHandling.Ignore;
//构建Json.net的读取流
JsonReader reader = new JsonTextReader(sr);
//对读取出的Json.net的reader流进行反序列化,并装载到模型中
cfm = serializer.Deserialize<ConfigFileModel>(reader);
Response.Write("<br/>");
Response.Write(cfm.FileName+", "+cfm.CreateDate);
}
catch (Exception ex)
{
ex.Message.ToString();
}
}
}
}
public class ConfigFileModel
{
public ConfigFileModel() { }
string _fileName;
public string FileName
{
get { return _fileName; }
set { _fileName = value; }
}
string _createDate;
public string CreateDate
{
get { return _createDate; }
set { _createDate = value; }
}
}
}