1、Json的格式:

  • 对象{"name": "value", "name1": "value1"}
  • 对象包含对象数组{"name": "value", "name1": "value1","name3":[{"name4":"value4"},{"name5":"value5"}]}
  • 对象数组[{"name": "value", "name1": "value1"},{"name2": "value2", "name3": "value3"}]

2、通用处理Json对象的C#类:DataContractJsonSerializer,命名空间:System.Runtime.Serialization.Json;

3、用一个控制台来显示,代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person { name = "LiLei", age = 12, skillArr = new[] { "C#", "Java" } };
            Person p2 = new Person { name = "Jim", age = 13, skillArr = new[] { "ASP.NET", "Javascript" }, friends = new List<Person> { p1 } };
            string p1Str = JsonHelp.strJson<Person>(p1);
            string p2Str = JsonHelp.strJson<Person>(p2);
            string p3Str = JsonHelp.strJson<List<Person>>(new List<Person> { p1, p2 });
            Console.WriteLine(p1Str);
            Console.WriteLine(p2Str);
            Console.WriteLine(p3Str);
            Person pObj1 = JsonHelp.Parse<Person>(p1Str);
            Console.WriteLine(pObj1.GetType().ToString());
            Person pObj2 = JsonHelp.Parse<Person>(p2Str);
            Console.WriteLine(pObj2.GetType().ToString());
            List<Person> pObj3 = JsonHelp.Parse<List<Person>>(p3Str);
            Console.WriteLine(pObj3.GetType().ToString());
            Console.ReadLine();
        }
    }
    [DataContract]
    internal class Person
    {
        [DataMember]
        public string name { get; set; }
        [DataMember]
        public int age { get; set; }
        [DataMember]
        public string[] skillArr { get; set; }
        [DataMember]
        public List<Person> friends { get; set; }
    }
    internal static class JsonHelp
    {
        internal static T Parse<T>(string jsonStr)
        {
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))
            {
                return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
            }
        }
        internal static string strJson<T>(T jsonObj)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                new DataContractJsonSerializer(jsonObj.GetType()).WriteObject(ms, jsonObj);
                return Encoding.UTF8.GetString(ms.ToArray());
            }
        }
    }
}

最新文章

  1. mvc过滤器学习(1)
  2. ( 译、持续更新 ) JavaScript 上分小技巧(二)
  3. 20145212 实验三《敏捷开发与XP实践》
  4. [译] UML中的关系之Dependency
  5. Java学习-040-级联删除目录中的文件、目录
  6. JAVA-面向对象-继承
  7. PHP strrpos strpos strstr strrchr 区别
  8. ifndef/define/endif 的作用
  9. OpenCV2学习笔记02:MSVC2013搭建OpenCV开发环境
  10. Linux makefile 教程 非常详细,且易懂(转)
  11. sql server日期字段值的比较
  12. PLECS—直流电机系统2
  13. 简单的redis 的list应用
  14. ionic toggle点击返回true/false支持自定义
  15. mysql增删改查练习
  16. Js中的判空
  17. 解决javamail ssl 测试unable to find valid certification path to requested target
  18. 9.12DjangoORM回顾和路由.
  19. Python3基础 str partition 以参数字符串切分字符串,只切分为三部分
  20. SVN图形客户端上传静态库.a文件失败

热门文章

  1. Django 定制验证码
  2. Django视图之ORM连表操作一
  3. redis之(十九)redis的管理
  4. 遇见Python.h: No such file or directory的解决方法
  5. 比对两个Word文件内容是否一致的C#解决办法
  6. 如何在SQL Server中的SELECT TOP 中使用变量
  7. Python基础系列----语法、数据类型、变量、编码
  8. 这种文件别打开, 大小不足1KB, 却可以让你电脑瘫痪
  9. C++中正确使用PRId64
  10. 【剑指offer】面试题 4. 二维数组中的查找