zoukankan      html  css  js  c++  java
  • 不创建类将json数据转换

    一般,取到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的结构

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

  • 相关阅读:
    ar游戏开发入门三步走
    什么是 OpenCL OpenGL
    https 服务器搭建
    javascript 访问cookie信息
    手机网页制作需要注意的一点东西
    asp.net下载文件几种方式
    javascriptM
    PDF转JPG
    java实现PDF转HTML
    关于mysql ERROR 1045 (28000)错误的解决办法
  • 原文地址:https://www.cnblogs.com/a14907/p/5034307.html
Copyright © 2011-2022 走看看