博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通用Json的处理办法
阅读量:7279 次
发布时间:2019-06-30

本文共 2094 字,大约阅读时间需要 6 分钟。

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());
            }
        }
    }
}

转载于:https://www.cnblogs.com/zhangchenliang/p/3151506.html

你可能感兴趣的文章
【分享】免费建立自己的站点
查看>>
表单的验证:客户端验证和服务器端验证
查看>>
c++ 类初始化
查看>>
How to deal with the problem '<' in OpenERP's view file
查看>>
Linux下方便的块设备查看工具lsblk
查看>>
C#制作在线升级程序
查看>>
Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
查看>>
SSHD配置
查看>>
关于开源的RTP——jrtplib的使用
查看>>
mac osx voice over的使用
查看>>
【Tools】maven安装
查看>>
每日一句(2014-9-11)
查看>>
【BZOJ】1665: [Usaco2006 Open]The Climbing Wall 攀岩(spfa)
查看>>
最长上升(不下降)子序列(详细,转)
查看>>
EF 6 调用存储过程时返回多结果集和OUTPUT参数问题
查看>>
oracle调优 浅析关联设计
查看>>
@功能的逻辑判断(原创)
查看>>
java异常处理
查看>>
SQL Server 的三种用户自定义函数
查看>>
nodejs文件操作笔记
查看>>