zoukankan      html  css  js  c++  java
  • C# 中使用JSON

    C#中使用JSON不需要使用第三方库,使用.NET Framwork3.5自带的System.Runtime.Serialization.Json即可很好的完成JSON的解析。

    关于JSON的入门介绍见(首页的图很形象):

    http://www.json.org/

    一、Using

    需要添加引用:System.ServiceModel.Web 和 System.Runtime.Serialization,然后使用Using:

    using System.Runtime.Serialization.Json;
    using System.Runtime.Serialization;

    二、定义序列化的类

    假如我们要转化的JSON字符串格式为:

    {
         "encoding":"UTF-8",
         "plug-ins":["python","c++","ruby"],
         "indent":
         {
             "length":3,
             "use_space":true
         }
    }

    然后编写相应的序列化的类,注意下面类加的Attribute:

    JSON Object[DataContract(Namespace ="http://coderzh.cnblogs.com")]
    class Config
     {
         [DataMember(Order =0)]
         publicstring encoding { get; set; }
         [DataMember(Order =1)]
         publicstring[] plugins { get; set; }
         [DataMember(Order =2)]
         public Indent indent { get; set; }
     }
    
    [DataContract(Namespace ="http://coderzh.cnblogs.com")]
     class Indent
     {
         [DataMember(Order =0)]
         publicint length { get; set; }
         [DataMember(Order =1)]
         publicbool use_space { get; set; }
     }
    View Code

    三、对象转化为JSON字符串

     使用WriteObject方法:

    WriteObject var config =new Config(){
                              encoding ="UTF-8",
                              plugins =newstring[]{"python", "C++", "C#"}, 
                             indent =new Indent(){ length =4, use_space =false}
                              };
    
     var serializer =new DataContractJsonSerializer(typeof(Config));
     var stream =new MemoryStream();
     serializer.WriteObject(stream, config);
     byte[] dataBytes =newbyte[stream.Length];
     stream.Position =0;
     stream.Read(dataBytes, 0, (int)stream.Length);
     string dataString = Encoding.UTF8.GetString(dataBytes);
     Console.WriteLine("JSON string is:");
     Console.WriteLine(dataString);
    View Code

    四、JSON字符串转对象

    使用ReadObject方法:

    var mStream =new MemoryStream(Encoding.Default.GetBytes(dataString));
    
     Config readConfig = (Config)serializer.ReadObject(mStream);
    
    Console.WriteLine("Encoding is: {0}", readConfig.encoding);
    
     foreach (string plugin in readConfig.plugins)
     {
         Console.WriteLine("plugins is: {0}", plugin);
     }
    
     Console.WriteLine("indent.length is: {0}", readConfig.indent.length); 
    
    Console.WriteLine("indent.use_space is: {0}",  readConfig.indent.use_space);
    View Code

    五、输出结果:

    JSON stringis: {"encoding":"UTF-8","plugins":["python","C++","C#"],"indent":{"length":4,"use_space":false}}
    
     Encoding is: UTF-8
     plugins is: python
     plugins is: C++
     plugins is: C#
     indent.length is: 4
     indent.use_space is: False
    View Code
  • 相关阅读:
    Spring Boot (20) 拦截器
    Spring Boot (19) servlet、filter、listener
    Spring Boot (18) @Async异步
    Spring Boot (17) 发送邮件
    Spring Boot (16) logback和access日志
    Spring Boot (15) pom.xml设置
    Spring Boot (14) 数据源配置原理
    Spring Boot (13) druid监控
    Spring boot (12) tomcat jdbc连接池
    Spring Boot (11) mybatis 关联映射
  • 原文地址:https://www.cnblogs.com/powerzhang/p/3310196.html
Copyright © 2011-2022 走看看