c# 中json字符串反序列化的两种方法

我在处理json数据反序列化时,遇到以下格式的json数据:

{
	"smtcode": {
		"max": "100",
		"min": "20",
		"uom": "毫米",
		"code": "smtcode",
		"type": "str",
		"label": "SMT领料",
		"value": "50",
		"comment": "",
		"tol_type": "plus",
		"dec_count": "2",
		"dict_code": "smtcode",
		"tolerance": "",
		"default_value": ""
	},

	"smtcode1": {
		"max": "100",
		"min": "20",
		"uom": "毫米",
		"code": "smtcode1",
		"type": "str",
		"label": "SMT领料",
		"value": "50",
		"comment": "",
		"tol_type": "plus",
		"dec_count": "2",
		"dict_code": "smtcode",
		"tolerance": "",
		"default_value": ""
	}
}

我们可以看到上述json有两个对象,也可能有多个,但他们的内容字段是一致的,只有对象名称不一样,也就是说”smtcode,smtcode1“这部分不一致,实际中也不确定值是什么,这时我们则无法去定义固定的对象是反序列化它。那么我们应该怎么做呢?

1. JsonConvert.DeserializeObject

首先我们只需定义对象中固定那部分字段属性

 public class paramConfigs
    {
        public string label { get; set; }
        public string code { get; set; }
        public string type { get; set; }
        public string tolerance { get; set; }
        public string tol_type { get; set; }
        public int dec_count { get; set; }
        public string uom { get; set; }
        public string max { get; set; }
        public string min { get; set; }
        public string dict_code { get; set; }
        public string default_value { get; set; }
        public string value { get; set; }
        public string comment { get; set; }

    }

这时我们则利用Dictionary<string, paramConfigs>可以达到反序列化的目的。

var dict = JsonConvert.DeserializeObject<Dictionary<string, paramConfigs>>(jsonstr);

在这里插入图片描述

2.JsonSerializer.Deserialize

使用JsonSerializer.Deserialize的JsonElement类型则不需要定义像上述的paramConfigs子类,只需定义一个JsonElement类型的属性即可,如下
在这里插入图片描述
使用时则也非常简单,只需把你的json字符串传入即可

JsonSerializer.Deserialize<JsonElement>(param_configs)
  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值