zoukankan      html  css  js  c++  java
  • json转对象-对象转json

    我们经常会用到json,所以在c#里就会经常有对象or对象数组转json,json转对象or对象数组。

    ps:对象或者json可能是{}or[],也就是json属性or json数组形式,或者json对象属性里嵌套,嵌套属性....无限级嵌套都可以实现。

    前提:我们定义的对象,或者嵌套对象 一定要和json格式结构完全一样!

    重点说第一个和最后一个,个人建议用最后一个简单并强大

    定义对象:

    public class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }

    第一种方法:

    借用两个自定义方法,如下:

    private Object JsonToObj(String json, Type t)
            {
                try
                {
                    System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(t);
                    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
                    {
                        return serializer.ReadObject(ms);
                    }
                }
                catch
                {
                    return null;
                }
            }
            private string ObjToJson<T>(T data)
            {
                try
                {
                    System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());
                    using (MemoryStream ms = new MemoryStream())
                    {
                        serializer.WriteObject(ms, data);
                        return Encoding.UTF8.GetString(ms.ToArray());
                    }
                }
                catch
                {
                    return null;
                }
            }

    使用如下:

    任意格式和嵌套的json转对象:

    jsonStr是json字符串
      Person data = new  Person();

     data = JsonToObj(jsonStr, typeof(Person)) as Person; //如果是List对象,就把Person都换成List<Person>即可。

    对象转任意格式和嵌套的json字符串:

    jsonStr= ObjToJson<PlayerPet>(newdata);

    最后一种方法:强烈推荐 

    任意格式和嵌套的json转对象:

    jsonStr是json字符串
      Person data = new  Person();

    data = (Person)JsonConvert.DeserializeObject(jsonStr, typeof(Person));  //如果是List对象,就把Person都换成List<Person>即可。

    对象转任意格式和嵌套的json字符串:

    jsonStr= JsonConvert.SerializeObject(newdata);

    最后一种方法只需要引用:using Newtonsoft.Json;即可,无需单写方法

  • 相关阅读:
    Quartz.net
    Perfview 分析进程性能
    windbg 分析cpu异常
    ansible-vault 教程
    ansible 自动化运维(2)
    简单生成随机测试数据
    基于 RabbitMQ-EasyNetQ 实现.NET与Go的消息调度交互
    自绘 TreeDataView 控件
    C# 创建音频WAVE文件头信息(*.wav)
    C# GOF 23种设计模式 学习Log【更新中】
  • 原文地址:https://www.cnblogs.com/yonguibe/p/5151971.html
Copyright © 2011-2022 走看看