zoukankan      html  css  js  c++  java
  • JSON 数据转换

     

    • JSON概述
         JSON(Java Script Object Notation)JS对象符号,通常JSON和XML是二选一的,JSON的数据格式很类似于JavaScript的对象
    {
      "pets": {
        "name": "Jeffrey",
        "species": "Giraffe"
      }
    }
    • .NET原生方式进行数据转换
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Web;
     
        public class JsonHelper
        {
            public static string ToJson<T>(T obj)
            {
                string result = String .Empty;
                try
                {
                    System.Runtime.Serialization.Json. DataContractJsonSerializer serializer =
                    new System.Runtime.Serialization.Json.DataContractJsonSerializer( typeof(T));
                    using (System.IO.MemoryStream ms = new System.IO. MemoryStream())
                    {
                        serializer.WriteObject(ms, obj);
                        result = System.Text. Encoding.UTF8.GetString(ms.ToArray());
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                return result;
            }
     
            public static string ToJsonFromByList<T>( List<T> vals)
            {
                System.Text. StringBuilder st = new System.Text.StringBuilder();
                try
                {
                    System.Runtime.Serialization.Json. DataContractJsonSerializer s = new System.Runtime.Serialization.Json.DataContractJsonSerializer (typeof(T));
     
                    foreach (T city in vals)
                    {
                        using (System.IO.MemoryStream ms = new System.IO. MemoryStream())
                        {
                            s.WriteObject(ms, city);
                            st.Append(System.Text. Encoding.UTF8.GetString(ms.ToArray()));
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
     
                return st.ToString();
            }
     
            public static T ParseFormByJson<T>(string jsonStr)
            {
                T obj = Activator.CreateInstance<T>();
                using (System.IO.MemoryStream ms =
                new System.IO.MemoryStream (System.Text.Encoding.UTF8.GetBytes(jsonStr)))
                {
                    System.Runtime.Serialization.Json. DataContractJsonSerializer serializer =
                    new System.Runtime.Serialization.Json.DataContractJsonSerializer( typeof(T));
                    return (T)serializer.ReadObject(ms);
                }
            }
        }  
    • Newtonsoft.json组件方式进行数据转换
         采用Newtonsoft.json组件方式实现json数据的转换需要引用Newtonsoft.json组件。
      • 下载地址
      • 简易方式
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    using Newtonsoft.Json;
     
     
        public class JsonHelper
        {
            public static string ToJson<T>(T value)
            {
                return JsonConvert .SerializeObject(value,Formatting.None);
            }
     
            public static T FromJson<T>(string jsonText)
            {
                return JsonConvert .DeserializeObject<T>(jsonText); ;
            }
        }
      • 复杂可配置方式
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    using Newtonsoft.Json;
    using System.IO;
     
       public static string ToJson<T>(T value)
            {
                Newtonsoft.Json. JsonSerializer json = new Newtonsoft.Json.JsonSerializer();
                json.NullValueHandling = NullValueHandling.Ignore;
                json.ObjectCreationHandling = Newtonsoft.Json. ObjectCreationHandling.Replace;
                json.MissingMemberHandling = Newtonsoft.Json. MissingMemberHandling.Ignore;
                json.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                StringWriter sw = new StringWriter();
                Newtonsoft.Json. JsonTextWriter writer = new JsonTextWriter(sw);
                writer.Formatting = Formatting.None;
                writer.QuoteChar = '"';
                json.Serialize(writer, value);
                string output = sw.ToString();
                writer.Close();
                sw.Close();
                return output;
            }
          
            public static T FromJson<T>(string jsonText)
            {
                Newtonsoft.Json. JsonSerializer json = new Newtonsoft.Json.JsonSerializer();
                json.NullValueHandling = Newtonsoft.Json. NullValueHandling.Ignore;
                json.ObjectCreationHandling = Newtonsoft.Json. ObjectCreationHandling.Replace;
                json.MissingMemberHandling = Newtonsoft.Json. MissingMemberHandling.Ignore;
                json.ReferenceLoopHandling = Newtonsoft.Json. ReferenceLoopHandling.Ignore;
                StringReader sr = new StringReader(jsonText);
                Newtonsoft.Json. JsonTextReader reader = new JsonTextReader(sr);
                T result = (T)json.Deserialize(reader, typeof(T));
                reader.Close();
                return result;
            }
  • 相关阅读:
    bzoj 4012: [HNOI2015]开店
    POJ 1054 The Troublesome Frog
    POJ 3171 Cleaning Shifts
    POJ 3411 Paid Roads
    POJ 3045 Cow Acrobats
    POJ 1742 Coins
    POJ 3181 Dollar Dayz
    POJ 3040 Allowance
    POJ 3666 Making the Grade
    洛谷 P3657 [USACO17FEB]Why Did the Cow Cross the Road II P
  • 原文地址:https://www.cnblogs.com/liusuqi/p/3181696.html
Copyright © 2011-2022 走看看