网际飞扬

还记得年少时的梦么,醒不过来 便信以为真……

主题背景
本网站首发版本创建于1999年4月
网际飞扬
手机网站二维码

请使用手机扫描二维码,登录网站手机版。

C#处理Json数据常用的两个类库Newtonsoft和LitJson使用介绍

  • 2023-06-03
  • 2013
  • 飞驰的心

C#常用Json类库介绍

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\"}";
        Dictionary dict = 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}}条
  • {{i+1}}楼
    {{rs.Msg_Sender}}{{rs.Msg_Datetime}}

    {{rs.Msg_Content}}

播放器封面
  • 宠物精灵