C#处理Json数据常用的两个类库Newtonsoft和LitJson使用介绍
- 2023-06-03
- 2149
- 飞驰的心
C#中常用的json类库有两个,其中Newtonsoft的市场占有率最高,LitJson又很轻量化,如何选择让很多朋友犯愁,今天这个文章重点介绍一下它们的用法,如何选择您自己斟酌。
Newtonsoft常用实例:
//创建一个JSON对象 JObject js = new JObject(); js["Name"] = "John"; js["Age"] = 30; //也可以使用 JObject 的构造函数进行初始化: JObject js = new JObject( new JProperty("Name", "John"), new JProperty("Age", 30) ); //反序列化(字符串转json)推荐方法 string jsonString = "{\"Name\":\"John\",\"Age\":30}"; JObject json= JObject.Parse(jsonString); //反序列化(字符串转json)dynamic类型的优势:可以直接访问JSON对象的属性,不需要进行类型转换 string jsonString = "{\"Name\":\"John\",\"Age\":30}"; dynamic json = JsonConvert.DeserializeObject(jsonString); //辅助方法:删改查 JObject json = JObject.Parse("{\"Name\":\"John\",\"Age\":30,\"City\":\"New York\"}"); jsonObject.Remove("Age"); // 删除名为 "Age" 的属性 JObject json = JObject.Parse("{\"Name\":\"John\",\"Age\":30,\"City\":\"New York\"}"); jsonObject["Age"] = 35; // 将 "Age" 属性的值修改为 35 JObject json = JObject.Parse("{\"Name\":\"John\",\"Age\":30,\"City\":\"New York\"}"); JToken nameValue = jsonObject["Name"]; // 查询名为 "Name" 的属性的值 if (nameValue != null) { string name = nameValue.ToString(); // 进行后续操作 } //创建 JSON 数组 JArray jsonArray = new JArray(); jsonArray.Add("value1"); jsonArray.Add("value2"); jsonArray.Add("value3"); // 反序列化 JSON 数组(字符串转json) string jsonArrayString = "[\"value1\", \"value2\", \"value3\"]"; JArray jsonArray = JArray.Parse(jsonArrayString); // 序列化 JSON 数组(json转字符串) string jsonArrayString = jsonArray.ToString(); //将json转换成字典 string json = "{\"key1\":\"value1\",\"key2\":\"value2\"}"; Dictionary dict = JsonConvert.DeserializeObject >(json); //将字典转为json Dictionary dict = new Dictionary (); dict.Add("key1", "value1"); dict.Add("key2", "value2"); string json = JsonConvert.SerializeObject(dict); //json校验和验证 string json = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; //定义 JSON 架构 string schemaJson = "{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"integer\"},\"city\":{\"type\":\"string\"}},\"required\":[\"name\",\"age\",\"city\"]}"; JsonSchema schema = JsonSchema.Parse(schemaJson); JObject jsonObject = JObject.Parse(json); // 验证 JSON 数据是否符合架构定义 bool isValid = jsonObject.IsValid(schema); //返回json类型 public JObject GetJsonObject() { // 创建一个JSON对象 JObject jsonObject = new JObject(); jsonObject["Name"] = "John"; jsonObject["Age"] = 30; return jsonObject; } //实体类转json JsonConvert.SerializeObject(content) //空值判断 data["menu_name"].Type == JTokenType.Null
LitJson常用实例:
// 创建一个 JSON 对象 JsonData jsonObject = new JsonData(); jsonObject["Name"] = "John"; jsonObject["Age"] = 30; // 反序列化(字符串转 JSON) string jsonString = "{\"Name\":\"John\",\"Age\":30}"; JsonData json = JsonMapper.ToObject(jsonString); // 辅助方法:删改查 JsonData jsonObject = JsonMapper.ToObject("{\"Name\":\"John\",\"Age\":30,\"City\":\"New York\"}"); jsonObject.Remove("Age"); // 删除名为 "Age" 的属性 jsonObject["Age"] = 35; // 将 "Age" 属性的值修改为 35 JsonData nameValue = jsonObject["Name"]; // 查询名为 "Name" 的属性的值 if (nameValue != null) { string name = nameValue.ToString(); // 进行后续操作 } // 创建 JSON 数组 JsonData jsonArray = new JsonData(); jsonArray.Add("value1"); jsonArray.Add("value2"); jsonArray.Add("value3"); // 反序列化 JSON 数组(字符串转 JSON) string jsonArrayString = "[\"value1\", \"value2\", \"value3\"]"; JsonData jsonArray = JsonMapper.ToObject(jsonArrayString); // 序列化 JSON 数组(JSON 转字符串) string jsonArrayString = jsonArray.ToJson(); // 将 JSON 转换为字典 string json = "{\"key1\":\"value1\",\"key2\":\"value2\"}"; Dictionarydict = JsonMapper.ToObject >(json); // 将字典转为 JSON Dictionary dict = new Dictionary (); dict.Add("key1", "value1"); dict.Add("key2", "value2"); string json = JsonMapper.ToJson(dict); // JSON 校验和验证 string json = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; // 定义 JSON 架构 string schemaJson = "{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"integer\"},\"city\":{\"type\":\"string\"}},\"required\":[\"name\",\"age\",\"city\"]}"; JsonSchemaValidator validator = new JsonSchemaValidator(JsonMapper.ToObject(schemaJson)); bool isValid = validator.Validate(json); // 返回 JSON 类型 JsonData jsonObject = GetJsonObject(); // 实体类转 JSON string json = JsonMapper.ToJson(content); // 空值判断 JsonData data = jsonObject["menu_name"]; if (data != null && data.IsNull) { // 进行空值处理 }
事实上我对“轻量化”这个词总是停留在文件多与少这个层面,两个类库都是只引用一个dll即可,所以对我而言也没什么轻重之分了。
本博客所有内容均为原创,原则上我不希望你转载。如特别喜欢而转载的话,请务必注明出处“网际飞扬 http://www.fayo.net”
否则本人闲来无事可能会把你误当成维权的靶子。
评论
全部评论
共{{commentCount}}条{{rs.Msg_Content}}