当前位置: 首页 > 工具软件 > JSON for .NET > 使用案例 >

Json.NET读写Json文件

东方玉泽
2023-12-01

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; }
        }
    }
}




 类似资料: