无实体反序列化Json
public class ExectendHelp
{
private int index = 0;
public void GetLast(JObject obj, ref JToken token, string key)
{
JToken t = null;
string[] arr = key.Split('.');
int length = arr.Length;
if (index != length)
{
string strArr = arr[index++];
if (strArr.IndexOf('[') >= 0)
{
string[] strArrItem = strArr.Replace("]", "").Split('[');
if (index == arr.Length)
{
token = obj[strArrItem[0]][Convert.ToInt32(strArrItem[1])];
}
else
{
t = obj[strArrItem[0]][Convert.ToInt32(strArrItem[1])];
JObject jj = (JObject)t;
GetLast(jj, ref token, key);
}
}
else
{
if (index == arr.Length)
{
token = obj[strArr];
}
else
{
t = obj[strArr];
JObject jj = (JObject)t;
GetLast(jj, ref token, key);
}
}
}
}
}
/// <summary>
/// 反序列化Json得到指定键名的值
/// </summary>
/// <param name="json">操作的Json字符串</param>
/// <param name="key">键名</param>
/// <returns></returns>
public static object GetValueForJson(this string json, string key)
{
int length = key.Split('.').Length;
object obj = null;
if (length == 0)
{
obj = null;
}
else
{
dynamic DynamicObject = JsonConvert.DeserializeObject<dynamic>(json);
JObject array = DynamicObject;
JToken token = null;
ExectendHelp ExectendHelp = new ExectendHelp();
ExectendHelp.GetLast(array, ref token, key);
obj = token.Value<object>();
}
return obj;
}
private static T GetValueForJson<T>(this string json, string key)
{
int length = key.Split('.').Length;
T obj = default(T);
if (length != 0)
{
dynamic DynamicObject = JsonConvert.DeserializeObject<dynamic>(json);
JObject array = DynamicObject;
JToken token = null;
ExectendHelp ExectendHelp = new ExectendHelp();
ExectendHelp.GetLast(array, ref token, key);
obj = token.Value<T>();
}
return obj;
}
public static string UpdateValueForJson(this string json, string key, object obj)
{
return string.Empty;
}
/// <summary>
/// 得到数组
/// </summary>
/// <param name="json">操作的Json字符串</param>
/// <param name="key">键名</param>
/// <returns></returns>
public static Array GetArray(this string json, string key)
{
Array arr = GetValueForJson<Array>(json, key);
return arr;
}
/// <summary>
/// 得到String数组
/// </summary>
/// <param name="json">操作的Json字符串</param>
/// <param name="key">键名</param>
/// <returns></returns>
public static string[] GetStringArray(this string json, string key)
{
string[] strArr = GetValueForJson<string[]>(json, key);
return strArr;
}
/// <summary>
/// 得到String数组
/// </summary>
/// <param name="json">操作的Json字符串</param>
/// <param name="key">键名</param>
/// <returns></returns>
public static int[] GetIntArray(this string json, string key)
{
int[] intArr = GetValueForJson<int[]>(json, key);
return intArr;
}
/// <summary>
/// 得到Sting字符串
/// </summary>
/// <param name="json">操作的Json字符串</param>
/// <param name="key">键名</param>
/// <returns></returns>
public static string GetString(this string json, string key)
{
string str = GetValueForJson<string>(json, key);
return str;
}
/// <summary>
/// 得到数字
/// </summary>
/// <param name="json">操作的Json字符串</param>
/// <param name="key">键名</param>
/// <returns></returns>
public static int GetInt(this string json, string key)
{
int i = GetValueForJson<int>(json, key);
return i;
}
/// <summary>
/// 得到时间
/// </summary>
/// <param name="json">操作的Json字符串</param>
/// <param name="key">键名</param>
/// <returns></returns>
public static DateTime GetDateTime(this string json, string key)
{
DateTime DateTime = GetValueForJson<DateTime>(json, key);
return DateTime;
}
也可以参考 https://www.cnblogs.com/klsw/p/5904573.html
无实体反序列化Json的更多相关文章
- C#序列化及反序列化Json对象通用类JsonHelper
当今的程序界Json大行其道.因为Json对象具有简短高效等优势,广受广大C#码农喜爱.这里发一个序列化及反序列化Json对象通用类库,希望对大家有用. public class JsonHelper ...
- Java基础/利用fastjson反序列化json为对象和对象数组
利用fastjson反序列化json为对象和对象数组 利用 fastjosn 将 .json文件 反序列化为 java.class 和 java.util.List fastjson 是一个性能很好的 ...
- Jackson序列化和反序列化Json数据完整示例
Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会 ...
- json数组的序列化和反序列化json数组的序列化和反序列化
如题,我就不多说了,自己看代码的,很好理解 using System; using System.Collections.Generic; using System.Web; using System ...
- .NET中如何使用反序列化JSON字符串/序列化泛型对象toJsonStr
在进行 .NET Web MVC 框架开发的网站程序的时候,我们都会遇到最关键的问题,数据传输. .NET MVC 4中的ControllerBase类建议我们用ViewBag动态数据字典形式(t ...
- Newtonsoft.Json.dll反序列化JSON字符串的方法
1.直接反序列化JSON字符串 //引用序列化.反序列化JSON字符串用到的空间 using Newtonsoft.Json; using Newtonsoft.Json.Linq; //定义一个 ...
- C# 实体转为json字符串
C# 实体转为json字符串 Catalog cata = new Catalog(); cata.C_platformid = 0; cata.C_isnav = 0; cata.C_isvalid ...
- jackson实体转json时 为NULL不参加序列化的汇总
首先加入依赖 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson ...
- c#,Model 实体转json,字符串转json
public class JsonF { #region 字符串转json /// <summary> /// 字符串转json /// </summary> /// < ...
随机推荐
- poj 1228
就是给你一堆点,看这些点能否构成一个 稳定的凸包. 凸包每条边上有3个及以上的点就可以了. #include <cstdio> #include <cstring> #incl ...
- 已知两点的经度和纬度,计算两点间的距离(php,javascript)
php代码:转载 http://www.cnblogs.com/caichenghui/p/5977431.html /** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 ...
- Unity 为队伍设置不同颜色的shader
在魔兽争霸等一些游戏中,我们通过模型的颜色就能很轻松的区分队伍,如下: 实现的方法有很多,比如: 1,为不同队伍各出一张不同颜色的贴图(Hmmm,war3有的地图可以容纳12只队伍,美术大大们会很 ...
- MUI - 复选框、单选框、使用js获取选择值
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- linux下部分软件截图
1.配置环境变量 vi /etc/profile JAVA_HOME=/usr/local/usr_software/jdk_1.8.0.121CLASSPATH=.:$JAVA_HOME/lib/t ...
- I2C写时序图[转]
1. I2C写时序图: 注意:最后一个byte后,结束标志在第十个CLK上升沿之后: 2. I2C读时序图: 注意:restart信号格式:读操作结束前最后一组clk的最后一个上升沿,主机应发送NAC ...
- jsp (二) 练习
package cn.sasa.serv; import java.io.IOException; import java.sql.SQLException; import java.util.Lis ...
- [js]浏览器同源策略(same-origin policy)
浏览器的同源策略 浏览器同源政策及其规避方法 什么是同源策略 A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源".所谓"同源"指的是" ...
- Spring框架的第三天
## Spring框架的第三天 ## ---------- **课程回顾:Spring框架第二天** 1. IOC的注解方式 * @Value * @Resource(name="" ...
- Docker 推送镜像到hub.docker
1.Docker镜像文件:lails.server.demo:1.0, 2.登录Docker:docker login[根据提示输入用户名/密码] 3.执行:docker push lails.ser ...