编程题:1. var person = '{name:"Lily",sex:"famale",age:24,country:"US"}';将person转换成JSON对象并便利每个属性值。
/// <summary>
/// Json工具类
/// </summary>
public class JsonUtility
{
private static JsonUtility _instance = new JsonUtility(); /// <summary>
/// 单例
/// </summary>
public static JsonUtility Instance
{
get { return _instance; }
set { _instance = value; }
} /// <summary>
/// Json转对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public T JsonToObject<T>(string json)
{
var ser = new DataContractJsonSerializer(typeof(T));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
var jsonObject = (T)ser.ReadObject(ms);
ms.Close();
return jsonObject;
} /// <summary>
/// Json转对象列表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public IList<T> JsonToObjectList<T>(string json)
{
json = json.Replace("}]}", "");
var startIndex = json.IndexOf(":[{") + 3;
var newJson = json.Substring(startIndex);
var regex = new Regex("},{");
var jsons = regex.Split(newJson); if (newJson.Contains("\":[]}"))
{
throw new Exception("快件单号没有找到");
}
var list = new List<T>(); foreach (var item in jsons)
{
var temp = "{" + item + "}";
list.Add(JsonToObject<T>(temp));
}
return list;
} /// <summary>
/// 对象转Json
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public string ObjectToJson(object obj)
{
var serializer = new DataContractJsonSerializer(obj.GetType());
using (var ms = new MemoryStream())
{
serializer.WriteObject(ms, obj);
var sb = new StringBuilder();
sb.Append(Encoding.UTF8.GetString(ms.ToArray()));
return sb.ToString();
}
} /// <summary>
/// 对象列表转Json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="objectList"></param>
/// <returns></returns>
public string ObjectListToJson<T>(IList<T> objectList)
{
return ObjectListToJson(objectList, "");
} /// <summary>
/// 对象列表转Json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="objectList"></param>
/// <param name="className"></param>
/// <returns></returns>
public string ObjectListToJson<T>(IList<T> objectList, string className)
{
var sbResult = new StringBuilder();
sbResult.Append("{");
className = string.IsNullOrEmpty(className) ? objectList[0].GetType().Name : className;
sbResult.Append("\"" + className + "\":["); for (var i = 0; i < objectList.Count; i++)
{
var item = objectList[i];
if (i > 0)
{
sbResult.Append(",");
}
sbResult.Append(ObjectToJson(item));
} sbResult.Append("]}");
return sbResult.ToString();
}
}
编程题:1. var person = '{name:"Lily",sex:"famale",age:24,country:"US"}';将person转换成JSON对象并便利每个属性值。的更多相关文章
- java编程如何实现多条2017-01-16 22:28:11.0这样的时间数据,转换成Date类型Mon Jan 16 22:28:11 CST 2017这样的时间数据
不多说,直接上干货! package zhouls.bigdata.DataFeatureSelection.sim; import java.text.ParseException; import ...
- JS编程题
1.计算给定数组 arr 中所有元素的总和 (数组中的元素均为 Number 类型) function sum(arr) { var sum=0; for (var i=arr.length-1; i ...
- 汤姆大叔的6道javascript编程题题解
看汤姆大叔的博文,其中有篇(猛戳这里)的最后有6道编程题,于是我也试试,大家都可以先试试. 1.找出数字数组中最大的元素(使用Math.max函数) var a = [1, 2, 3, 6, 5, 4 ...
- 去哪儿网2017校招在线笔试(前端工程师)编程题及JavaScript代码
编程题很简单.整个试卷结构为: 一.问答题: 对前端的理解,了解哪些框架库? 二.在线编程题:身份证分组 如下第一道:身份证分组 三.在线编程题:身份证分组.统计字符.酒店价格(三选二) 如下第二三四 ...
- JavaScript数组基础编程题归纳
之前的随笔"JavaScript中数组类型的属性和方法"中有介绍很多数组类型的方法,但都是一些理论.最近在练习在线编程题,发现自己还是习惯于用常规的循环来答题,对于数组的方法的使用 ...
- JS编程题练习
JS编程题练习 1. 两个数组合并成一个数组排序返回 先依次比较两个数组,按照小的就传入新的数组.当这次比较完之后可能有一个数组的长度很长,留下一些数组,然后在新数组的末尾插入即可. function ...
- JavaScript编程题(含腾讯2016校招题)
作者:ManfredHu 链接:http://www.manfredhu.com/2016/04/02/15-veryGoodForUsing/ 声明:版权所有,转载请保留本段信息,否则请不要转载 几 ...
- FCC编程题之中级算法篇(下)
介绍 本篇是"FCC编程题之中级算法篇"系列的最后一篇 这期完结后,下期开始写高级算法,每篇一题 目录 1. Smallest Common Multiple 2. Finders ...
- 头条编程题 万万没想到之抓捕孔连顺 JavaScript
[编程题] 万万没想到之抓捕孔连顺 时间限制:1秒 空间限制:131072K 我叫王大锤,是一名特工.我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺.和我一起行动的还有另外两名特工,我提议 ...
随机推荐
- Django之学员管理三
Django之学员管理三 web框架的本质: 本质是客户端和服务端的交互.用socket实现. socket客户端(浏览器) 2.发送ip和端口,http://www.baidu.com:80/ind ...
- Python 文件操作(一)
一.注意事项 A.能调用方法的一定是对象 B.文件的操作流程: 1. 打开文件,得到文件句柄并赋值给一个变量 2. 通过句柄对文件进行操作 3. 关闭文件 二.操作实现方法 '''文件名:小双双文件内 ...
- Highlights in a Journal
** Highlights **** example- b huang, 2016, Design and performance enhancement of a bi-directional co ...
- 剑指Offer(书):二进制中1的个数
题目:输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 分析:下面这两种方法都可以,不过第二种更好一些. public int numberOf1(int n) { int count ...
- 深刻理解下js的prototype
参考 http://aralejs.org/class/docs/competitors.html, http://www.iteye.com/topic/248933,http://www.cnbl ...
- 比较spring cloud和dubbo,各自的优缺点是什么
dubbo由于是二进制的传输,占用带宽会更少springCloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大 dubbo的开发难度较大,原因是dubbo的 ...
- xtu summer individual-4 B - Party All the Time
Party All the Time Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on HDU. Orig ...
- SQL2012通用分页存储过程
--提取分页数据,返回总记录数 Createprocedure [dbo].[sp_Common_GetDataPaging_ReturnDataCount] ( @SqlString varchar ...
- Linux CentOS命令行界面字体重复问题解决记录
问题描述: 安装完CentOS 6.5 mini版之后,安装图形界面,启动之后出现如下问题,字体有重复 应该是因为字体原因, 我的解决方法: yum -y install dejavu-sans-* ...
- [luoguP3606] [USACO17JAN]Building a Tall Barn建谷仓(贪心 + 线段树)
传送门 把线段都读进来然后排序,先按右端点为第一关键字从小到大排序,后按左端点为第二关键字从小到大排序. 注意不能先按左端点后按右端点排序,否则会出现大包小的情况,如下: —————— ——— — ...