通过获取客户端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 ...
随机推荐
- [Java] 使用 Spring 2 Portlet MVC 框架构建 Portlet 应用
转自:http://www.ibm.com/developerworks/cn/java/j-lo-spring2-portal/ Spring 除了支持传统的基于 Servlet 的 Web 开发之 ...
- [Java] HashMap遍历的两种方式
Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml第一种: Map map = new HashMap( ...
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
作者:阿里云用户mr_wid ,z)NKt# @I6A9do 如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV RsfTUb)< 投票标题: 28.[阿里云 ...
- mysql-DDL-创建数据库
创建一个数据库 • 建立数据库操作: 语法: create database 数据库名 叙述:创建一个具有指定名称的数据库.如果要创建的 数据库已经存在,或者没有创建它的适当权限,则此 语句失败. 例 ...
- VS预生成事件命令行 和 生成后事件命令行
宏 说明 $(ConfigurationName) 当前项目配置的名称( ...
- winform分页管理
注意:其中可能用到部分自定义的扩展方法,在使用中需自己修改一下 /// <summary> /// 分页管理 /// </summary> public class Pagin ...
- OpenFlow概述
OpenFlow名称里面虽然包括“Flow”,但其并不是“又一个流程引擎”,我们认为世界上的流程引擎已经足够多了,每个流程引擎都各有千秋,有的甚至免费,所以我们不需要再做一个流程引擎,我们做OpenF ...
- PAT1015—— 德才论
宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人 ...
- MVC 使用Jquery实现AJax
View <script type="text/javascript"> function GetTime() { $.get("Home/GetTime&q ...
- jQuery 删除或是清空某个HTML元素示例
jQuery使用下面两个方法来删除或是清空某个HTML元素. remove() – 删除指定的元素(包括其子元素)empty() – 清空指定元素的子元素 1.remove() <!DOCTY ...