程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Json.net動態序列化以及對時間格式的處理,json.net序列化

Json.net動態序列化以及對時間格式的處理,json.net序列化

編輯:C#入門知識

Json.net動態序列化以及對時間格式的處理,json.net序列化


關於我工作中對Json處理的東西

第一:動態序列化類  

第二:時間格式處理

通常我們一個類裡 可能有十到更多的屬性,但是我們序列化通常只需要序列化其中的 三到五個這樣的話就會有多余的數據

 

 

 

如果 我只想序列化   id 跟name如何處理

這是我找的網上的方法:

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.Linq;

namespace CYP.New.WCF.Common.Common
{
    public class LimitPropsContractResolver : DefaultContractResolver
    {
        private string[] props = null;

        public LimitPropsContractResolver(string[] props)
        {
            this.props = props;
        }

        protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
        {
            IList<JsonProperty> list = base.CreateProperties(type, memberSerialization);

            //只保留清單有列出的屬性
            return list.Where(p => props.Contains(p.PropertyName)).ToList();
        }
    }
}

 

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

關於Json.net 處理日期格式      看第一張圖就知道  Json.net 處理日期格式 這尼瑪根本就不是正常人類能看的懂得

 

你可能會發現Json.net 裡有關於處理日期的東西

 

 

 

但是這個時候你就會發現   再Json.net的重載裡邊

     public static string SerializeObject(object value);
        public static string SerializeObject(object value, Formatting formatting);
        public static string SerializeObject(object value, JsonSerializerSettings settings);
        public static string SerializeObject(object value, params JsonConverter[] converters);
        public static string SerializeObject(object value, Formatting formatting, JsonSerializerSettings settings);
        public static string SerializeObject(object value, Formatting formatting, params JsonConverter[] converters);

你會發現   動態序列化 跟  時間處理的格式不能共存    這個問題 著實讓我小小的蛋疼了一把.....

解決方案:

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.Linq;

namespace CYP.New.WCF.Common.Common
{
    public class LimitPropsContractResolver : DefaultContractResolver
    {
        private string[] props = null;

        public LimitPropsContractResolver(string[] props)
        {
            this.props = props;
        }

        protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
        {
            IList<JsonProperty> list = base.CreateProperties(type, memberSerialization);
            IsoDateTimeConverter iso = new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
            IList<JsonProperty> listWithConver = new List<JsonProperty>();
            foreach (var item in list)
            {
                if (props.Contains(item.PropertyName))
                {
                    if (item.PropertyType.ToString().Contains("System.DateTime"))
                    {
                        item.Converter = iso;
                    }
                    listWithConver.Add(item);
                }
            }
            return listWithConver;
        }
    }
}

 

 

一些關於Json.net的處理  

本著對大家有幫助的態度    

關於Josn.net的下載地址 http://www.codeplex.com/                                                                                               -------------Make  by  夜色、花清淺

                                                                                         


什叫JSON序列化?在net下面學習json,我不懂什叫序列化?有什作用?

json字符串本身是以一定格式組織的,就和xml用成對標簽一樣,json需要以:
"key":"value";的形式來組織;
這樣成為一個字符串序列;序列化的優點無非就是解析方便和便於理解,例如javascript可以用eval直接將json變為一個對象來通過key調用value屬性;
相信.net也有對json串進行處理的函數或者類,可以查找下。
 

JSONNET 將對象 序列化為 JSON字符串時,可以否指定,某個屬性不被轉化

通常在需要序列化屬性下標記即可:
[JsonProperty(Name = "password")]
public string Password{ get; set; }

你試試 不標記的情況下能否實現~
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved