使用Newtonsoft.Json处理含有未知节点的JSON

字符串转对象时JSON需要先了解该字符串包含的数据格式,是对象还是数组。

   对象是以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:{"ID":"112","Name":"石子儿"}。

         数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。例如:[{"ID":"112","Name":"石子儿"},{"ID":"113","Name":"陈晨"}]

数组转换可用 var ja=JArray.Parse(str);

对象转换可用 var jo=JObject.Parse(str);

 

JSON字符串转对象的两种方法,含未知JSON元素

格式:        {"ProcessName":21,"Folio":11,"CurrentUser":31,"Parameters":{"FormID":"3","CheckMessage":"1111"}}

Parameters不固定。

一、 将Parameters转为JObject再 使用dynamic 循环获取

{

                JObject objJ = JObject.Parse(JSONStr);//创建JObject对象
                string ProcessName = objJ["ProcessName"].ToString();
                string Folio = objJ["Folio"].ToString();
                string CurrentUser = objJ["CurrentUser"].ToString();
                string JSONParameters = objJ["Parameters"].ToString();
                JObject objParameters = JObject.Parse(JSONParameters);
                Dictionary<string, string> dict = new Dictionary<string, string>();
                dynamic parsedObject = objParameters;
                foreach (var item in objParameters)
                {
                    dict.Add(item.Key.ToString(), item.Value.ToString());
                }
            }

二、 使用Model(推荐)

 public class JSONBean
    {
        public JSONBean()
        { }
        public Dictionary<string, string> Parameters;
        /// <summary>
        /// 
        /// </summary>
        public int ProcessName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int Folio { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int CurrentUser { get; set; }
        /// <summary>
        /// 
        /// </summary>
    }

{

                JSONBean jb = JsonConvert.DeserializeObject<JSONBean>(JSONStr);
                s += jb.CurrentUser;
                s += jb.Folio;
                s += jb.ProcessName;
                foreach (var item in jb.Parameters)
                {
                    s += "\r\n" + item.Key + ":" + item.Value + "\r\n";
                }
            }
            this.txtMSG.Text = s;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值