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:

    [DataContract(Namespace = "http://coderzh.cnblogs.com")]
    class Config
    {
        [DataMember(Order 
    = 0)]
        
    public string encoding { getset; }
        [DataMember(Order 
    = 1)]
        
    public string[] plugins { getset; }
        [DataMember(Order 
    = 2)]
        
    public Indent indent { getset; }
    }

    [DataContract(Namespace 
    = "http://coderzh.cnblogs.com")]
    class Indent
    {
        [DataMember(Order 
    = 0)]
        
    public int length { getset; }
        [DataMember(Order 
    = 1)]
        
    public bool use_space { getset; }
    }

    三、对象转化为JSON字符串

    使用WriteObject方法:


    var config = new Config(){
                             encoding 
    = "UTF-8",
                             plugins 
    = new string[]{"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 = new byte[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);

    四、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);

     五、输出结果:

    复制代码
    JSON string is:
    {
    "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 
    is4
    indent.use_space 
    is: False
    复制代码
  • 相关阅读:
    window.onload和$(document).ready(function(){})的区别
    javascript:让表单 文本框 只读,不可编辑的方法
    JQuery操作下拉框
    项目中常用js方法整理common.js
    embed标签动态改变Src的值,局部刷新播放其他视频的javascript方法
    在BootStrap的modal中使用Select2
    小数点校验,只允许输入数字,小时点后只有两位
    带左右按钮的左右循环滚动轮播图,图片上带css3动效,用于显示文字
    JavaScript 函数方法
    JavaScript 函数方法
  • 原文地址:https://www.cnblogs.com/soundcode/p/3781451.html
Copyright © 2011-2022 走看看