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
您可能感兴趣
- 如何判断数据是json还是字符串(JSON.stringify的多种用法总结)
- thinkphp返回json(thinkphp5框架实现数据库读取的数据转换成json格式示例)
- json和xml比较与区别
- Json序列化对象的部分属性值
- python将对象转换成json(python对象与json相互转换的方法)
- js如何操作json字符串
- mysql xml转换json(Mysql将查询结果集转换为JSON数据的实例代码)
- packagejson怎么使用(最全的package.json解析)
- mysql存储json的方式(MySQL中查询json格式的字段实例详解)
- JavaScriptSerializer对Json对象的序列化和反序列化
- python获取json结果保存文本(Python JSON格式数据的提取和保存的实现)
- laravel 数据表格(Laravel自定义 封装便捷返回Json数据格式的引用方法)
- 怎么用织梦上传源码(如何把织梦dedecms数据生成json)
- nodejs json文件读写(nodejs将JSON字符串转化为JSON对象报错的解决)
- sqlserver字段说明(详解SQL Server 中 JSON_MODIFY 的使用)
- python3json序列化(Python3.5 Json与pickle实现数据序列化与反序列化操作示例)
- 文莱旅游攻略(文莱旅游攻略介绍)
- 马来西亚旅游攻略(马来西亚旅游攻略自由行攻略)
- 缅甸旅游攻略(缅甸旅游攻略必去景点推荐)
- 《庆余年2》新消息,原班人马,肖战特别出演,这才是最好的安排(庆余年2新消息原班人马)
- 宁夏灵武恐龙化石发现始末(宁夏灵武恐龙化石发现始末)
- 到了岁末 临门一脚 节点,天台综合督评会目标直指 全年红(到了岁末临门一脚)
热门推荐
- sqlserver怎么调成混合登录(如何快速删掉SQL Server登录时登录名下拉列表框中的选项)
- 云服务器的巧妙用法(云服务器的技术是如何实现的?)
- dedecms怎么设置下拉菜单(dedecms中关于{dede:channel type='son'}无子栏目时取同级栏目问题是解决方法分)
- C#中抽象类和接口的区别有哪些
- python浪漫表白源码(python七夕浪漫表白源码)
- mysql8修改默认端口(MySQL 8.0新特性 — 管理端口的使用简介)
- mysql 多表连接查询(MySQL多表查询的具体实例)
- php怎么设置curl(php curl发送请求实例方法)
- dedecms数据负载能力(详解织梦dedecms标签{dede:flink /}用法)
- sql性能优化案例(SQL性能优化之定位网络性能问题的方法DEMO)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9