我使用Json.Net序列化对象,但是现在我需要序列化嵌套对象
样本序列化对象:https://www.newtonsoft.com/json/help/html/SerializeObject.htm
public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreatedDate { get; set; }
public IList<string> Roles { get; set; }
}
Account account = new Account
{
Email = "james@example.com",
Active = true,
CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc),
Roles = new List<string>
{
"User",
"Admin"
}
};
string json = JsonConvert.SerializeObject(account, Formatting.Indented);
// {
// "Email": "james@example.com",
// "Active": true,
// "CreatedDate": "2013-01-20T00:00:00Z",
// "Roles": [
// "User",
// "Admin"
// ]
// }
Console.WriteLine(json);
但是现在我需要一个像这样的Json:
// {
// "Email": "james@example.com",
// "Active": true,
// "CreatedDate": "2013-01-20T00:00:00Z",
// "Roles": [
// "User"{
// "key": "value",
// "key": "value"
// }
// "Admin"
// ]
// }
我如何构建这个Json?
答案 0 :(得分:1)
您需要根据需要创建一个单独的/嵌套的类。 请找到下面的代码,如果您需要任何其他信息或对其进行更改,请告知我:
private void Serialise()
{
//prepare static data
List<User> users = new List<User>()
{
new User() {key = "value1"},
new User() {key = "value2"}
};
Roles roles = new Roles();
roles.Users = users;
roles.Role = "Admin";
Account account = new Account
{
Email = "james@example.com",
Active = true,
CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc),
Roles = roles
};
//serialise
string json = JsonConvert.SerializeObject(account, Formatting.Indented);
}
public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreatedDate { get; set; }
public Roles Roles { get; set; }
}
public class Roles
{
public List<User> Users { get; set; }
public string Role { get; set; }
}
public class User
{
public string key { get; set; }
}
答案 1 :(得分:1)
public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreatedDate { get; set; }
public IList<Roles> Roles { get; set; }
}
public class Roles
{
public Dictionary<string, string> User { get; set; }
}
static void Main(string[] args)
{
Account account = new Account
{
Email = "james@example.com",
Active = true,
CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc),
Roles = new List<Roles> { new Roles { User=new Dictionary<string, string>
{
{"Key","value" },
{"key","value" }
}
},
},
};
string json=JsonConvert.SerializeObject(account,Newtonsoft.Json.Formatting.Indented);
Console.WriteLine(json);
Console.ReadLine();
}