c#wpf |创建具有用户定义名称的复杂对象以序列化为JSON

时间:2019-08-17 11:44:07

标签: c# json wpf object json.net

我正在制作一个基本的WPF c#聊天应用程序,并希望允许用户注册一个帐户。该程序将附加具有以下结构的JSON文件:

{
    "user1":{
                "password":"password1"
            },
    "user2":{
                "password":"password2"
            }
}

用用户名替换user1&2,用密码替换password1&2。

我尝试使用方括号;

//user is the name of the TextBox that the user puts their username into
//pass is the name of the password box ^

Object [user.Text] = new
{
    password = new {
        pass.Password
    }
};

但是就是这样。

2 个答案:

答案 0 :(得分:0)

最简单的方法是反序列化现有数据,添加新注册的用户。再次序列化它。 例如,如果需要用户,请给出当前示例。

var currentUserCollection = JsonConvert.DeserializeObject<Dictionary<string,Dictionary<string,string>>>(str);
currentUserCollection.Add("user3",new Dictionary<string,string>{["password"]="password3"});
var newJson = JsonConvert.SerializeObject(currentUserCollection);

这将产生如下输出

{
    "user1": {
        "password": "password1"
    },
    "user2": {
        "password": "password2"
    },
    "user3": {
        "password": "password3"
    }
}

答案 1 :(得分:0)

我不确定为什么要尝试将用户作为不同的条目。您的用例是否将所有用户的集合保存在JSON文件中?如果是这样,您可以将json对象结构更改为更简单的对象。 例如:

public class UserSet {
    public List<User> Users {get; set;}
}

public class User{
    public string UserName { get; set; }
    public string Password { get; set; }
}

然后,当您添加新用户时,只需使用其用户名和密码创建一个新对象,然后将其添加到所有用户的列表中即可。