Json.NET不序列化到文件

时间:2015-11-25 03:11:47

标签: c# json json.net

即使使用Documentation中的示例,我仍然找不到成功序列化到文件的方法。

代码:

Program.cs的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.IO;
using System.Threading;

namespace TestProject
{
    class Program
    {
        static void Main(string[] args)
        {
            Item i = new Item
            {
                Username = "user",
                Email = "user@user.com",
                Password = "password"
            };


            File.WriteAllText(@"C:\users\user1.json", JsonConvert.SerializeObject(i));

            using (StreamWriter file = File.CreateText(@"C:\users\user1.json"))
            {
                JsonSerializer serializer = new JsonSerializer();
                serializer.Serialize(file, i);
            }

        }
    }
}

Item.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestProject
{
    public class Item
    {
        public string Email { get; set; }
        public string Password { get; set; }
        public string Username { get; set; }
    }
}

当我运行Program.cs时,它没有显示任何错误,但JSON没有显示在文件中。

2 个答案:

答案 0 :(得分:1)

当我运行你的代码时,我得到一个异常写入users文件夹。更改到我的主文件夹工作正常。我怀疑这是你的问题。

另外,你要两次写文件。第一次显示了使用SerializeObject方法获取与WriteAllText一起使用的字符串的示例。第二个代码块使用StreamWriter。出于您的目的,两者都是等效的,您只需要使用其中一个。

答案 1 :(得分:0)

        using (StreamWriter file = File.CreateText(@"C:\users\user1.json"))
        {
            var jsonResult = JsonConvert.SerializeObject(i);
            file.WriteLine(jsonResult);
        }