首页 > Web开发 > 详细

不创建类将json数据转换

时间:2015-12-09 23:15:22      阅读:256      评论:0      收藏:0      [点我收藏+]

一般,取到json数据之后,都会将json数据转换为对象,通过属性取得里面的属性值,这样做可以很好地利用vs的智能提示,让开发更轻松,但是代价就是,你需要手动的创建json数据相对应的类。

也有其他方法可以很方便的取到数据:

1.利用正则表达式提取,代码如下:

 public static int GetIntProperty(string key, string json)
        {
            var code = 0;
            var regex = new Regex(String.Format("\"{0}\":(?<value>-?\\d+)", key), RegexOptions.IgnoreCase);

            var match = regex.Match(json);
            if (match.Success)
            {
                var codeValue = match.Groups["value"].Value;

                int.TryParse(codeValue, out code);

                return code;
            }

            return 0;
        }

        public static string GetStringProperty(string key, string json)
        {

            var regex = new Regex(String.Format("\"{0}\":\"(?<value>.+?)\"", key), RegexOptions.IgnoreCase);

            var match = regex.Match(json);
            if (match.Success)
            {
                return match.Groups["value"].Value;
            }

            return String.Empty;
        }

        public static string Serialize(object obj)
        {
            var jser = new JavaScriptSerializer();
            var json = jser.Serialize(obj);

            json = Regex.Replace(json, @"\\/Date\((\d+)\)\\/", match =>
            {
                DateTime dt = new DateTime(1970, 1, 1);
                dt = dt.AddMilliseconds(long.Parse(match.Groups[1].Value));
                dt = dt.ToLocalTime();
                return dt.ToString("yyyy-MM-dd HH:mm:ss");
            });

            return json;
        }

 一共三个方法,第一个是取json里面的int类型的值,当然稍微改造下的也可以取得bool类型的。。。

第二个放大取得string类型的值,

打三个方法,主要是为了解决json数据中日期类型的数据显示异常的问题。

 

2.利用Newtonsoft.Json把json对象转换成dynamic对象

public void GetPropertyValue(string jsonStr)
        {
            dynamic stocks = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonStr);
            code = stock.name;
            symbol = stock.age;
            name = stock.gender;
        }        

 上面只是演示,json字符串对应的是一个有code,symbol,stock三个属性的类

利用这个方法可以很方便的取值,但是要求你知道json的结构

 

好了,这就是今天的分享。

不创建类将json数据转换

原文:http://www.cnblogs.com/a14907/p/5034307.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!