通过获取客户端Json数据字符串,反序列化为实体对象的一段代码
#region 保存候选人数据
/// <summary>
/// 保存候选人数据
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[AdminAuthorize]
[ValidateInput(false)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save(matchjob.Domain.Candidate entity)
{
if (entity.Id == )
{
entity.CreateTime = DateTime.Now;
this.CandidateManager.Save(entity); var json = Request.Form["candidateItemsJsonValue"];
if (String.IsNullOrEmpty(json))
{
goto LABEL_END;
} using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(matchjob.Web.UI.Models.TTTT_A));
var a = (matchjob.Web.UI.Models.TTTT_A)serializer.ReadObject(ms); foreach (var p in a.Positions)
{
var item = new matchjob.Domain.CandidateItem();
item.Position = p.Name;
item.Candidate = entity;
item.CreateTime = DateTime.Now;
item.UpdateTime = item.CreateTime;
CandidateItemManager.Save(item); foreach (var u in p.Users)
{
int Score, Experience, Interest, Salary;
Int32.TryParse(u.Score, out Score);
Int32.TryParse(u.Experience, out Experience);
Int32.TryParse(u.Interest, out Interest);
Int32.TryParse(u.Salary, out Salary); var item2 = new matchjob.Domain.CandidateUser();
item2.CandidateItem = item;
item2.Remark = u.Remark;
item2.Score = Score;
item2.UserInfo = new UserInfo();
item2.UserInfo.Id = u.UserInfoId;
item2.Experience = Experience;
item2.Interest = Interest;
item2.Salary = Salary;
item2.CreateTime = DateTime.Now;
item2.UpdateTime = item.CreateTime;
CandidateUserManager.Save(item2);
}
}
} LABEL_END:
{ }
}
else
{
var model = this.CandidateManager.Get(entity.Id);
model.CompanyName = entity.CompanyName;
model.ValidateCode = entity.ValidateCode; this.CandidateManager.Update(model); var json = Request.Form["candidateItemsJsonValue"];
if (String.IsNullOrEmpty(json))
{
goto LABEL_DEL;
} using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{ DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(matchjob.Web.UI.Models.TTTT_A));
var a = serializer.ReadObject(ms) as matchjob.Web.UI.Models.TTTT_A; foreach (var p in a.Positions)
{
var item = new matchjob.Domain.CandidateItem();
var delUsers = new List<matchjob.Domain.CandidateUser>();
item.Id = p.Id;
item.Position = p.Name;
item.Candidate = model; if (p.Id != )
{
item = CandidateItemManager.Get(p.Id);
item.Position = p.Name;
} if (p.Id != )
{
item.UpdateTime = DateTime.Now;
CandidateItemManager.Update(item); delUsers = item.CandidateUsers.Where(CUser => !p.Users.Contains(new Models.TTTT_C { UserInfoId = CUser.UserInfo.Id }, new CandidateUserComparer())).ToList();
}
else
{
item.CreateTime = DateTime.Now;
item.UpdateTime = item.CreateTime;
CandidateItemManager.Save(item);
} ///更新和增加User
foreach (var u in p.Users)
{
int Score, Experience, Interest, Salary;
Int32.TryParse(u.Score, out Score);
Int32.TryParse(u.Experience, out Experience);
Int32.TryParse(u.Interest, out Interest);
Int32.TryParse(u.Salary, out Salary); var item2 = new matchjob.Domain.CandidateUser();
item2.CandidateItem = item;
item2.Remark = u.Remark;
item2.Score = Score;
item2.UserInfo = new UserInfo();
item2.UserInfo.Id = u.UserInfoId;
item2.Id = u.Id;
item2.Experience = Experience;
item2.Interest = Interest;
item2.Salary = Salary; if (u.Id != )
{
item2 = CandidateUserManager.Get(u.Id); item2.CandidateItem = item;
item2.Remark = u.Remark;
item2.Score = Score;
item2.Experience = Experience;
item2.Interest = Interest;
item2.Salary = Salary;
} if (u.Id != )
{
item2.UpdateTime = DateTime.Now;
CandidateUserManager.Update(item2);
}
else
{
item2.CreateTime = DateTime.Now;
item2.UpdateTime = item2.CreateTime;
CandidateUserManager.Save(item2);
}
}
///删除User
foreach (var u in delUsers)
{
foreach(var f in CandidateForwardUserManager.GetByCandidateUserId(u.Id))
{
CandidateForwardUserManager.Delete(f.Id);
}
CandidateUserManager.Delete(u.Id);
}
}
} LABEL_DEL:
///删除已经移出的职位数据
foreach (var itemid in Request.Form["candidateItemsDel"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
var users = CandidateUserManager.GetsByCandidateItemId(Convert.ToInt64(itemid)); for (int k = ; k < users.Count; k++)
{
///先删除关联对象
foreach (var f in CandidateForwardUserManager.GetByCandidateUserId(users[k].Id))
{
CandidateForwardUserManager.Delete(f.Id);
}
CandidateUserManager.Delete(users[k].Id);
} ///先删除关联对象
foreach (var f in CandidateForwardManager.GetByCandidateItemId(Convert.ToInt64(itemid)))
{
CandidateForwardManager.Delete(f.Id);
}
CandidateItemManager.Delete(Convert.ToInt64(itemid));
}
} return Json(new { IsSuccess = true, Message = "保存成功" }, "text/plain", JsonRequestBehavior.AllowGet);
}
#endregion
public class TTTT_e
{
public TTTT_B[] Positions { get; set; }
} public class TTTT_B
{
public long Id { get; set; }
public String Name { get; set; }
public TTTT_C[] Users { get; set; }
} public class TTTT_C
{
public long Id { get; set; }
public long UserInfoId { get; set; }
public String Score { get; set; }
public String Remark { get; set; }
public String Name { get; set; } public String Experience { get; set; }
public String Interest { get; set; }
public String Salary { get; set; }
}
通过获取客户端Json数据字符串,反序列化为实体对象的一段代码的更多相关文章
- C# 请求Web Api 接口,返回的json数据直接反序列化为实体类
须要的引用的dll类: Newtonsoft.Json.dll.System.Net.Http.dll.System.Net.Http.Formatting.dll Web Api接口为GET形式: ...
- C#复杂XML反序列化为实体对象两种方式
前言 今天主要讲的是如何把通过接口获取到的Xml数据转换成(反序列化)我们想要的实体对象,当然Xml反序列化和Json反序列化的方式基本上都是大同小异.都是我们事先定义好对应的对应的Xml实体模型,不 ...
- XML字符串反序列化为实体
JSON反序列化实体 paydata = StringHelper.Base64ToString(paydata); resInfo = JsonConvert.DeserializeObject&l ...
- 使用 dynamic 标记解析JSON字符串 JDynamic :支持Json反序列化为Dynamic对象
使用 dynamic 标记解析JSON字符串 http://www.cnblogs.com/taotaodetuer/p/4171327.html 1 string jsonStr = " ...
- 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏
一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...
- 将JSON字符串反序列化为指定的.NET对象类型
目录导航: 前言: 方法一.在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用): 方法二.直接将JSON字符串格式数据反序列化转化为字典数据(简单JSON字符 ...
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
引言 前段时间一直在做一个ERP系统,随着系统功能的完善,客户端(CS模式)变得越来越臃肿.现在想将业务逻辑层以下部分和界面层分离,使用Web Service来做.由于C#中通过直接添加引用的方来调用 ...
- JDynamic :支持Json反序列化为Dynamic对象
JDynamic :支持Json反序列化为Dynamic对象 2010年 .NET 4.0 发布前后,从3.5向4.0迁移,那时也有一些异构系统的需求,主要是和PHP打交道,通信使用的HTTP 格 ...
- C# Newtonsoft.Json反序列化为dynamic对象之后的使用
通过Newtonsoft.Json将一个json类型的字符串反序列化为dynamic后直接使用报错 源代码: namespace ConsoleApplication1 { class Program ...
随机推荐
- Android SQLite 的简单实例
1.前言: 今天再一次去蹭了一下某老师的android课,这一次讲的是Android的SQLite的使用,老师当场讲解了他自己做的例子. 回来之后,我春心萌动,不得不拿着参考资料再做了一个类似的例子, ...
- sourcetree下回退
上篇 最后展示了再命令行下回退的功能,再来看看sourcetree下如何操作 新建 新建文本文档.txt,添加一行"第一次“,并提交 1.添加一行"第二次",现在修改只在 ...
- CENTOS如何禁用ROOT本地或远程SSH登录
下面详细描述如何禁止root登录. 禁止root本地登录 禁止root远程ssh登录 禁止root本地登录 修改/etc/pam.d/login文件增加下面一行 1 auth required p ...
- poj 2455 Secret Milking Machine 二分+最大流 sap
题目:p条路,连接n个节点,现在需要从节点1到节点n,不重复走过一条路且走t次,最小化这t次中连接两个节点最长的那条路的值. 分析:二分答案,对于<=二分的值的边建边,跑一次最大流即可. #in ...
- P2342 叠积木
P2342 叠积木 17通过 66提交 题目提供者wwqk4444 标签树状数组线段树USACO 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目背景 Cube Stacki ...
- asp.net MVC dropList 绑定
废话我就不多说了..上个图.给自己备忘一下
- 关于MSSQL导入导出时主键与约束丢失的问题解决
导入数据时,使用默认选项,会丢失主键.约束.默认值等属性,按如下步骤操作: -->导出向导 -->选择数据源 -->选择目的 -->指定表复制或查询:不要使用默认选项,选择“在 ...
- springmvc的一个小例子学习(一)
个人觉得,学框架最好的 方法无外乎两个:一个是实践这个框架,真实的去用它,比如spring框架,先搭一个简单的spring项目,然后一步一步得去丰富它,从中学到spring框架的精髓和知识:另外一个就 ...
- Linux下设置定期执行脚本
下面针对的是非ubuntu环境,会在文章末尾介绍ubuntu的一些区别. 在Linux下,经常需要定期的执行一些脚本从而来实现一些功能. 在Linux下我们用crontab来实现定期的执行脚本这个功能 ...
- web.config配置aspx页面默认引用的namespace
如果我们在aspx页面上使用<%%>的方式使用某些类的时候很多都没办法直接使用,我们必须要在页面上引用命名空间, 如:如果我们要使用DataTable类的时候,我们必须先使用<%@ ...