Skip to main content

Json

public class UserInfo
{
public string UserName { get; set; }
public int Age { get; set; }
}

ToObj(字符串转为对象)

string userInfo = @"
{
""userName"": ""ABCD"",
""age"": 23
}";
var user = userInfo.ToObj<UserInfo>();
// user.UserName == "ABCD";
// user.Age == 23;

ToObjCollection(字符串转为对象集合)

string userInfo = @"
[
{
""userName"": ""ABCD"",
""age"": 23
}
]";
IEnumerable<UserInfo> user = userInfo.ToObjCollection<UserInfo>();
// user.First().UserName = "ABCD";
// user.First().Age = 23;

ToJson(对象转字符串)

UserInfo user = new()
{
UserName = "ABCD",
Age = 23
};
var jsonString = user.ToJson().Trim();
// "{\"userName\":\"ABCD\",\"age\":23}"

JsonMap(使用 json map)

public class UserInfoTwo
{
public string UserName { get; set; }
public int Age { get; set; }
}
UserInfo user = new()
{
UserName = "ABCD",
Age = 23
};
UserInfoTwo user2 = user.JsonMap<UserInfoTwo>();
tip

在某些情况下还能当深拷贝使用

JsonNode

note

当拿到的 json 对象比较复杂时, 相比于构建对应的 class, 使用 JsonNode 更加方便

string userInfo = @"
[
{
""userName"": ""ABCD"",
""age"": 23
}
]";
JsonNode userNode = userInfo.ToJsonNode();
JsonArray userArray = userNode.ToJsonArray();
JsonObject userObject = userNode.ToJsonObject();
tip

有些时候一个复杂的json是由很多系统已有的小对象组成, 我们可以只转换其中的一部分

var userInfos = userNode.ToObj<IEnumerable<UserInfo>>();