zoukankan      html  css  js  c++  java
  • JSON.NET 简单的使用

    JSON.NET(http://json.codeplex.com/,https://github.com/JamesNK/Newtonsoft.Json)使用来将.NET中的对象转换为JSON字符串(序列化?),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?)

    首先为了例子随便定义一个类型:

    public class Product
    {
        public string Name { get; set; }
        public DateTime Expiry { get; set; }
        public decimal Price { get; set; }
        public string[] Sizes { get; set; }
    
        public override string ToString()
        {
            return string.Format("Name:{0},Expiry:{1},Price:{2},SizesCount:{3}"
                , Name, Expiry, Price, Sizes.Length);
        }
    }

    初始化对象:

    public static void Main(string[] passwordargs)
    {
        Product product = new Product()
        {
            Name = "android",
            Expiry = DateTime.Now,
            Price = 2000,
            Sizes = new string[] { "1.5", "2.2", "4.1" }
        };
    }

    进行到JSON的转换:

    Console.WriteLine(JsonConvert.SerializeObject(product));

    输出结果:

    {"Name":"android","Expiry":"2013-08-30T09:50:11.5147845+08:00","Price":2000.0,"Sizes":["1.5","2.2","4.1"]}

    其它看起来一切正常,除了这个日期有点怪

    格式化日期:

    //设置日期时间的格式,与DataTime类型的ToString格式相同
    IsoDateTimeConverter iso = new IsoDateTimeConverter();
    iso.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
    
    Console.WriteLine(JsonConvert.SerializeObject(product, iso));

    输出结果:

    {"Name":"android","Expiry":"2013-08-30 09:53:58","Price":2000.0,"Sizes":["1.5","2.2","4.1"]}

    从JSON到对象的转换:

    string str = "{"Name":"android","Expiry":"2013-08-30 09:53:58","Price":2000.0,"Sizes":["1.5","2.2","4.1"]}";
    
    Product p = (Product)JsonConvert.DeserializeObject(str, typeof(Product));
    
    Console.WriteLine(p.ToString());

    输出结果:

    Name:android,Expiry:2013/8/30 9:53:58,Price:2000.0,SizesCount:3

    从JSON到键值对的转换:

    string strJson = @"{""Name1"": ""小明"",""Name2"": ""小花"",""Name3"": ""小红""}";
    
    Dictionary<string, string> _dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(strJson);
    
    foreach (KeyValuePair<string, string> kp in _dictionary)
    {
        Console.WriteLine(kp.Key + ":" + kp.Value);
    }

    输出结果:

    Name1:小明
    Name2:小花
    Name3:小红

    从字符串转换到JSON对象,以及JSON对象的简单使用:

    string strJson2 = @"{ ""student"": { ""Name1"": ""小明"" , ""Name2"": ""小花"" , ""Name3"": ""小红""} }";
    
    JObject jsonObj = JObject.Parse(strJson2);
    
    Console.WriteLine(jsonObj["student"]["Name1"].ToString());
    Console.WriteLine(jsonObj["student"]["Name2"].ToString());
    Console.WriteLine(jsonObj["student"]["Name3"].ToString());

    输出结果:

    小明
    小花
    小红

    直接生成JSON对象:

    JObject json =
        new JObject(
        new JProperty("Channel",
            new JObject(
            new JProperty("title", "JSON"),
            new JProperty("link", "JSON.NET"),
            new JProperty("description", "JSON.NET Description"),
            new JProperty("items",
                new JArray(
                new JObject(new JProperty("haha1", "123")),
                new JObject(new JProperty("haha2", "456")),
                new JObject(new JProperty("haha3", "789"))
                    )))));
    
    Console.WriteLine(json.ToString());

    输出结果:

    {
      "Channel": {
        "title": "JSON",
        "link": "JSON.NET",
        "description": "JSON.NET Description",
        "items": [
          {
            "haha1": "123"
          },
          {
            "haha2": "456"
          },
          {
            "haha3": "789"
          }
        ]
      }
    }

    暂时先记录这么多,以后再继续补充

  • 相关阅读:
    job owner的权限和sql agent start account权限在job调用和job执行的各个阶段起什么作用?
    【转帖】SharePoint 2010中的沙盒解决方案(Sandboxed Solution)
    [ZT]使用IIS作为宿主的WCF服务出现HTTP Error 404.3 Not Found错误的解决办法
    [zt]SharePoint Calculate date column 日期计算列(20100916 23:04:14)
    PortalSiteMapProvider was unable to fetch children for node
    [ZT]SharePoint列表导入/导出命令 SharePoint列表导入/导出命令
    [ZT]一个女IT民工的梦
    “System.Collections.Generic.IEnumerable<TestDAL.HistoryData>”不包含“ToList”的定义
    C#生成随机序列
    利用C#线程窗口调试多线程程序
  • 原文地址:https://www.cnblogs.com/xwgli/p/3290964.html
Copyright © 2011-2022 走看看