Newtonsoft.Json JsonHelper

 1 using System;
  2 using System.Linq;
  3 using Newtonsoft.Json;
  4 using Newtonsoft.Json.Serialization;
  5 using System.Collections.Generic;
  6
  7 namespace TT.Utilities.Json
  8 {
  9     public static class JsonHelper
 10     {
 11         /// <summary>
 12         /// 只序列号需要的字段
 13         /// </summary>
 14         /// <param name="obj"></param>
 15         /// <param name="arrFiled"></param>
 16         /// <returns></returns>
 17         public static string GetPartModelJson(object obj, string[] arrFiled)
 18         {
 19             JsonSerializerSettings jsetting = new JsonSerializerSettings();
 20             jsetting.ContractResolver = new LimitPropsContractResolver(arrFiled);
 21             return JsonConvert.SerializeObject(obj, Formatting.Indented, jsetting);
 22         }
 23
 24         /// <summary>
 25         /// 转换成json格式
 26         /// </summary>
 27         /// <param name="obj">对象</param>
 28         /// <returns></returns>
 29         public static string GetJson(object obj)
 30         {
 31             return JsonConvert.SerializeObject(obj);
 32         }
 33
 34         /// <summary>
 35         /// json格式字符串转化成T类型对象
 36         /// </summary>
 37         /// <typeparam name="T">类型</typeparam>
 38         /// <param name="json">json字符串</param>
 39         /// <returns></returns>
 40         public static T GetModel<T>(string json)
 41         {
 42             return JsonConvert.DeserializeObject<T>(json);
 43         }
 44
 45         /// <summary>
 46         /// 反序列化成json属性
 47         /// </summary>
 48         /// <param name="json">json字符串</param>
 49         /// <returns></returns>
 50         public static Newtonsoft.Json.Linq.JProperty DeserialJson(string json)
 51         {
 52             return JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JProperty>(json);
 53         }
 54
 55         /// <summary>
 56         /// 反序列化JSON到给定的匿名对象.
 57         /// </summary>
 58         /// <typeparam name="T">匿名对象类型</typeparam>
 59         /// <param name="json">json字符串</param>
 60         /// <param name="anonymousTypeObject">匿名对象</param>
 61         /// 调用:var objClass = JsonClass.DeserializeAnonymousType(obj.Data.ToString(), nClass[匿名对象]);
 62         /// <returns>匿名对象</returns>
 63         public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject)
 64         {
 65             T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);
 66             return t;
 67         }
 68
 69         public class LimitPropsContractResolver : DefaultContractResolver
 70         {
 71             string[] props = null;
 72
 73             bool retain;
 74
 75             /// <summary>
 76             /// 构造函数
 77             /// </summary>
 78             /// <param name="props">传入的属性数组</param>
 79             /// <param name="retain">true:表示props是需要保留的字段  false:表示props是要排除的字段</param>
 80             public LimitPropsContractResolver(string[] props, bool retain = true)
 81             {
 82                 //指定要序列化属性的清单
 83                 this.props = props;
 84
 85                 this.retain = retain;
 86             }
 87
 88             protected override IList<JsonProperty> CreateProperties(Type type,
 89
 90             MemberSerialization memberSerialization)
 91             {
 92                 IList<JsonProperty> list =
 93                 base.CreateProperties(type, memberSerialization);
 94                 //只保留清单有列出的属性
 95                 return list.Where(p =>
 96                 {
 97                     if (retain)
 98                     {
 99                         return props.Contains(p.PropertyName);
100                     }
101                     else
102                     {
103                         return !props.Contains(p.PropertyName);
104                     }
105                 }).ToList();
106             }
107         }
108     }
109 }
时间: 2024-11-08 22:59:05

Newtonsoft.Json JsonHelper的相关文章

Newtonsoft.Json(Json.Net)学习笔记(转)

Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库,通过Nuget获取.(查看原文) 下面是Json序列化和反序列化的简单封装: /// <summary> /// Json帮助类 /// </summary> public class JsonHelper { /// <summary> /// 将对象序列化为JSON格式 /// </summary> /// <param name="o">对

Newtonsoft.Json(Json.Net)学习笔记

Newtonsoft.Json 在Vs2013中就有自带的: 下面是Json序列化和反序列化的简单封装: /// <summary> /// Json帮助类 /// </summary> public class JsonHelper { /// <summary> /// 将对象序列化为JSON格式 /// </summary> /// <param name="o">对象</param> /// <ret

[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) JSON序列化利器 Newtonsoft.Json 及 通用Json类

[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) JSON序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能不了解Json.net(Newtonsoft.Json)这款世界级的开源类库,除了拥有良好的性能之外,功能也是非常强大的. 本节会详细说明这个类库.此外,对于不喜欢使用第三方类库的同学,会整理一个基于微软类库的通用Json类. 读前必备: 本节主要介绍一款第三方类库和一个自己整理封装的类库,说起到封装

Newtonsoft.Json(Json.Net)学习笔记-高级使用(转)

1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称 7.动态决定属性是否序列化 8.枚举值的自定义格式化问题 9.自定义类型转换 10.全局序列化设置  一.忽略某些属性 类似本问开头介绍的接口优化,实体中有些属性不需要序列化返回,可以使用该特性.首先介绍Json.Net序列化的模式:OptOut 和 OptIn OptOut 默认值,类中所有公有成员会被序列化,如果不想被序列化,可以用特性JsonIgnore OptIn 默认情况下

Newtonsoft.Json输出Json时动态忽略属性

一,前言 最近做项目采用Json形式和其他客户端交互,借助于Newtonsoft.Json . 由于业务场景不同,输出的Json内容也不同.要想忽略的属性,可以借助Newtonsoft.Json的特性,在实体前面添加特性[JsonIgnore]即可,但有时候会根据业务需求,在不同的地方输出同一个实体中不同的属性,所以添加特性的方式显然不能满足要求.例如user表,在A场景下需要password:B场景下不需要. 二,解决办法 可以重写Newtonsoft.Json的DefaultContract

Newtonsoft.Json高级用法

手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了其中7个字段,剩余9个字段的数据全部都是多余的,如果接口返回数据为40K大小,也就是说大约20K的数据为无效数据,3G网络下20K下载差不多需要1s,不返回无效数据至少可以节约1s的时间,大大提高用户体验.本篇将为大家

Json序列化之.NET开源类库Newtonsoft.Json的研究

一.Json简介                                                                                                                    JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的文本格式,可以很容易在各种网络.平台和程序之间传输.JSON的语法很简单,

csharp:using Newtonsoft.Json.Net2.0 in .net 2.0 webform

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

mvc 使用Newtonsoft.Json进行序列化json数据

mvc 使用Newtonsoft.Json进行序列化json数据 JsonResult  使用js 序列号化,先集成扩展.使用newtonsoft http://blog.csdn.net/zhangyuanwei88/article/details/38556689