方式一: 使用于 JavaScriptSerializer类
适用于普通场景, Excel导入导出, 前台传输查询参数直接处理等.

       JavaScriptSerializer serializer = new
JavaScriptSerializer();
serializer.MaxJsonLength = int.MaxValue;
var qp = serializer.Deserialize<QueryP>(queryP);
private class QueryP
{
public string OrgID { get; set; }
public string KeyWords { get; set; }
} JavaScriptSerializer serializer = new JavaScriptSerializer();
var gridHeaders = serializer.Deserialize<List<grid>>(GridHeaders); /// <summary>
/// grid表头
/// </summary>
[Serializable]
public class grid
{
public string Text { get; set; }
public string DataIndex { get; set; }
public string Width { get; set; }
public List<grid> Cols { get; set; }
public bool Hiden { get; set; }
public string xtype { get; set; }
public string DataType { get; set; }//列类型
}

方式二: (不推荐使用DataContractJsonSerializer) 功能较多, 仅放一个例子, 不深入研究, 因为开源第三种方式不仅功能多, 性能还强.

//Person实体中的契约 [DataMember],[DataContract],是使用DataContractJsonSerializer序列化和反序列化必须要加的

//使用DataContractJsonSerializer方式需要引入的命名空间,在System.Runtime.Serialization.dll.中

 using System.Runtime.Serialization.Json;    

static void Main(string[] args)
{
//序列化操作
Person p1 = new Person()
{
name = "fxhl",
age = 23
};
DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(Person));
MemoryStream msObj = new MemoryStream();
//将序列化之后的Json格式数据写入流中
js.WriteObject(msObj, p1);
//从0这个位置开始读取流中的数据
msObj.Position = 0;
StreamReader sr = new StreamReader(msObj, Encoding.UTF8);
string json = sr.ReadToEnd();
Console.WriteLine(json);
sr.Close();
msObj.Close();
//反序列化操作
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(Person));
Person model = (Person)deseralizer.ReadObject(ms);// //反序列化ReadObject
Console.WriteLine(model.name);
}
Console.ReadKey();
}
}
[DataContract]
public class Person
{
[DataMember]
public string name { get; set; }
[DataMember]
public int age { get; set; }
}

方式三: 引入 Newtonsoft.Json 使用.

拓展方法使用, 可以直接使用.

public static T DeserializeModel<T>(this T model, string json)
{
try
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(json);
}
catch (Exception)
{
return model;
}
} public static T DeserializeModel<T>(this T model, DataTable dt)
{
try
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(Newtonsoft.Json.JsonConvert.SerializeObject(dt));
}
catch (Exception)
{
return model;
}
} public static T DeserializeJSON<T>(this string json) where T : new()
{
try
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>((json));
}
catch (Exception)
{
return new T();
}
} public static string SerializeModel(this object model)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(model);
} public static List<T> NMList<T>(this T model)// where T:new()
{
var L = new List<T>();
return L;
} public static Hashtable NMToHashTable<T>(this T model)
{
var ht = new Hashtable();
foreach (var f in model.GetType().GetProperties())
{
ht[f.Name] = f.GetValue(model, new object[] { });
}
return ht;
}

支持属性转译 和忽略字段.
JsonIgnore 注解 和 PropertyName 注解等.

    public class AuditModel
{
[JsonProperty(PropertyName = "checked", NullValueHandling = NullValueHandling.Ignore)]
public string SuccessMsg { get; set; } [JsonIgnore]
public HttpRequestBase context { get; set; }

最后, 利用Json.NET 完成Json到Xml 的转换:(完成的xml传输到数据库. 数据库根据/root 取相应执行逻辑)

        string JsonTOXml(string json, string modelName)
{
string _json = @"{
""?xml"": {
""@version"": ""1.0"",
""@standalone"": ""no""
},
""root"": {
""modelName"": " + json + @"
}
}";
_json = _json.Replace("modelName", modelName);
return Newtonsoft.Json.JsonConvert.DeserializeXmlNode(_json).OuterXml;
}

其他优秀博客可参考:
https://www.cnblogs.com/fengxuehuanlin/p/5700282.html 
http://www.cnblogs.com/yunfeifei/p/4086014.html
https://blog.csdn.net/WuLex/article/details/83026080
http://www.cnblogs.com/wuhuacong/p/3698122.html

JSON 序列化与反序列化, 与XML相互转换.的更多相关文章

  1. windows phone8.1:Xml,Json序列化和反序列化

    原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...

  2. DotNet的JSON序列化与反序列化

    JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...

  3. C#中JSON序列化和反序列化

    有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...

  4. WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化

    WPF中的常用布局   一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...

  5. C# 序列化与反序列化之xml对属性或者字段的子类化的子对象进行序列化的解决方案

    C# 序列化与反序列化之xml对属性或者字段的子类化的子对象进行序列化的解决方案 xml序列化涉及到XmlRoot,XmlInclude,XmlElement,XmlAttribute,XmlType ...

  6. Newtonsoft.Json 序列化和反序列化 时间格式

    From : http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeO ...

  7. Net中JSON序列化和反序列化处理(日期时间特殊处理)

    0  缘由 笔者最近在web api端使用Json.Net进行序列化处理,而在调用端使用DataContractSerializer进行反序列化,遇到日期时间处理反序列化不成功[备注:笔者使用Net ...

  8. Newtonsoft.Json 序列化和反序列化 时间格式 [转]

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

  9. C# JSON 序列化和反序列化——JavaScriptSerializer实现

    一. JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.您无法访问序列化程序的此实例.但是,此类公开了公共 API.因此, ...

随机推荐

  1. java数字转IP 一行

    System.out.println(InetAddress.getByName(String.valueOf(12345)).getHostAddress());

  2. C#中简单操作SQLserver数据库(ADO.NET的简单应用)

    本篇文章以 ADO.NET 访问SQL SERVER 数据库为例, 其中需用System.Data.SqlClient; 数据库连接字符串写法为:server=数据源(服务器名称);uid=用户名;p ...

  3. linux下centos解压时报错: gzip: stdin: not in gzip format   tar: Child returned status 1   tar: Error is not recoverable: exiting now

    最近在linux下安装python时,解压Python.tgz文件时遇到一个问题:          gzip: stdin: not in gzip format      tar: Child r ...

  4. Docker CE安装

    #添加账户docker useradd docker passwd docker (密码docker) #设置sudo权限 visudo root ALL=(ALL) ALL 后添加一行: docke ...

  5. 部署在sae上的servlet程序出现is not a javax.servlet.Servlet 错误

    sae本身提供了servlet jar包, 部署时删掉你lib目录下的servlet jar包.

  6. Python全栈之路----常用模块----re 模块

    正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是 re. re的匹配语法有以下几种 re.match 从头开始匹配 re.search 匹配包含 re.fin ...

  7. ExcelUploadUtil

    package com.rscode.credits.util; import java.io.File; import java.io.FileInputStream; import java.io ...

  8. Python读取和写入Excel文件

    制作Excel表 常用方法说明 Workbook类 Workbook类创建一个XlswWrite的Workbook对象,相当于创建一个excel表 And_worksheet()用来创建工作表,默认为 ...

  9. Java_03选择结构

    1.if 选择结构 格式: if(判断条件){ // 语句块 }else if(判断条件){ // 语句块 2 }else{ // 语句块 3 } 当 if 关键字后的一对大括号里只有一个语句时,可以 ...

  10. EBS查询在线用户

    转自:https://www.cnblogs.com/benio/archive/2011/03/10/1979417.html SELECT u.user_name, app.application ...