.net 里面将JSON的值根据键取出来

 tag 是传入的键  json是传入的JSON

 

  string val = "";
        try
        {


            if (json != null && json.Length > 0 && tag != null && tag.Length > 0)
            {


                try
                {
                    JObject jo = (JObject)JsonConvert.DeserializeObject(json);


                    if (jo[tag] == null)//可能存在子json里
                    {
                        IEnumerable<JProperty> properties = jo.Properties();
                        foreach (JProperty item in properties)
                        {
                            JToken jToken = item.Value;
                            if (jToken.GetType().ToString() == "Newtonsoft.Json.Linq.JArray")
                            {
                                JArray jobs = (JArray)jToken;
                                for (int i = 0; i < jobs.Count; i++)
                                {
                                    jo = JObject.Parse(jobs[i].ToString());
                                    if (jo[tag] != null)
                                    {
                                        val = jo[tag].ToString();
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {


                        val = jo[tag].ToString();


                    }
                    if (!string.IsNullOrEmpty(val))
                        return val;
                }
                catch (Exception ex)
                {
                    string msg = ex.Message;
                }
                int index = json.IndexOf("\"" + tag + "\"");
                if (index >= 0)
                {




                    val = json.Substring(index + tag.Length + 2);


                    int end_index_1 = val.IndexOf("\",");
                    int end_index_2 = val.IndexOf("}");


                    if (end_index_1 < end_index_2 && end_index_1 >= 0)
                    {
                        val = val.Substring(0, end_index_1);
                        val = val.Replace("\"", "").Replace(":", "");
                    }
                    else
                    {
                        if (index > 0)
                        {
                            val = val.Substring(0, end_index_2);
                            val = val.Replace("\"", "").Replace(":", "");
                        }
                    }




                }
            }
        }
        catch (Exception ex)
        {
            //Log.Info("tag=" + tag + ";json=" + json);
            //Log.Error(ex.Message, ex);
            throw ex;
        }


        //Log.Info("GetValueForJson 结束--------------");


        return val;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值