Json序列化对象的部分属性值
类别:编程学习 浏览量:463
时间:2016-4-29 Json序列化对象的部分属性值
Json序列化对象的部分属性值在用JSON序列化对象是,会返回这个对象的所有属性键值对,如果某个对象的属性非常多,但是我们需要获取的JSON数据只是其中的两三个属性,这样的情况,我们怎么优化呢?下面介绍一种简单的方法
一、效果如图
在序列化一个对象时, 只序列化了我们想要的两个属性, 实际对象有4个属性
二、具体实现方式
using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public double Meney { get; set; }
public double Tex { get; set; }
public DateTime Berthday { get; set; }
}
/// <summary>
///简单实体 可变属性序列化器
/// </summary>
public class PropertyVariableJsonSerializer
{
readonly System.Web.Script.Serialization.JavaScriptSerializer _serializer = new JavaScriptSerializer();
/// <summary>
/// json 序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="propertys"></param>
/// <returns></returns>
public string Serialize<T>(T obj, List<string> propertys)
{
_serializer.RegisterConverters(new[] { new PropertyVariableConveter(typeof(T), propertys) });
return _serializer.Serialize(obj);
}
}
public class PropertyVariableConveter : JavaScriptConverter
{
private readonly List<Type> _supportedTypes = new List<Type>();
public PropertyVariableConveter(Type supportedType, List<string> propertys)
{
_supportedTypes.Add(supportedType);
Propertys = propertys;
}
private List<string> Propertys { get; set; }
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
throw new Exception(" 这个暂时不支持 , 谢谢 ");
}
public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
var dic = new Dictionary<string, object>();
var t = obj.GetType();
var properties = t.GetProperties();
foreach (var ite in properties)
{
string key = ite.Name;
var v = t.GetProperty(key).GetValue(obj, null);
if (Propertys == null || Propertys.Count <= 0)
{
dic.Add(key, v);
continue;
}
if (Propertys.Contains(key))
{
dic.Add(key, v);
}
}
return dic;
}
public override IEnumerable<Type> SupportedTypes
{
get { return _supportedTypes; }
}
}
三、调用
public static void aaa()
{
var p = new Person { Age = 20, Name = "www.studyofnet.com", Meney = 3, Tex = 1};
var s = new PropertyVariableJsonSerializer();
string result = s.Serialize<Person>(p, new List<string>() { "Name", "Age" });
}
标签:Json
您可能感兴趣
- 什么是jsonp格式
- eval解析json字符串
- mysql 查询json(MySQL处理JSON常见函数的使用)
- sqlserver字段说明(详解SQL Server 中 JSON_MODIFY 的使用)
- pythonjson格式化原理(详解pythonstr与json类型转换)
- mysqljson字段查询(Mysql 查询JSON结果的相关函数汇总)
- js如何将json字符串转换为json对象
- python将对象转换成json(python对象与json相互转换的方法)
- json的语法
- JavaScriptSerializer对Json对象的序列化和反序列化
- 用javascript解析json(JavaScript JSON.stringify的使用总结)
- jsonkeyvalue怎么取(替换json对象中的key最佳方案)
- packagejson怎么使用(最全的package.json解析)
- sqlserver技术文档(sql server2016里面的json功能浅析)
- 火狐查看json数据
- python获取json结果保存文本(Python JSON格式数据的提取和保存的实现)
- 乾隆为何这么喜爱白塔原因是什么(乾隆为何这么喜爱白塔原因是什么)
- 逐渐消失的东北八大怪现象,进步的社会里我们遗失的是什么(逐渐消失的东北八大怪现象)
- 今日大雪,大雪养生这样做,一年都有好气色(大雪养生这样做)
- 粗盐是什么 粗盐的功效与作用(粗盐的功效与作用)
- 会 吃人 的客机 从天堂到地狱只需5分钟,图-104如何做到(会吃人的客机)
- 男人犯的错,为什么要女人来承担(为什么要女人来承担)
热门推荐
- typedef和var有什么不同(TypeScrip中泛型的案例详解)
- ftp命令详解(FTP 常用命令 使用说明)
- 用python图片转字符串(python实现图片转字符小工具)
- mysqlworkbench怎么设置连接(详解MySQL Workbench使用教程)
- python如何遍历列表并提取(Python同步遍历多个列表的示例)
- 云计算是一种服务的概念(云服务的意思,云服务是云计算吗?)
- docker如何进入容器(详解如何进入、退出docker容器的方法)
- sql优化100个技巧(52条SQL语句教你性能优化)
- angular封装公共组件(详解Angular组件之生命周期二)
- python爬虫10分钟教程(浅谈Python爬虫基本套路)