总结一下C#操作json的两种方式,都是将对象和json格式相转。

1.JavaScriptSerializer,继承自System.Web.Script.Serialization

private string Serializer<T>(T t)
{
JavaScriptSerializer json=new JavaScriptSerializer();
return json.Serialize(t);
} private T DeSerialze<T>(string strJeson) {
JavaScriptSerializer strJeson1 = new JavaScriptSerializer();
return strJeson1.Deserialize<T>(strJeson);
}

2.DataContractJsonSerializer,继承自System.Runtime.Serialization.Json;

代码如下
/// <summary>
/// create json data according to entity
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public static string GetJsonSerializar<T>(T t)
{
var ser = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms=new MemoryStream())
{
ser.WriteObject(ms,t);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
/// <summary>
/// parse json data accroding to json string data
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonStr"></param>
/// <returns></returns>
public static T ParseFromJson<T>(string jsonStr)
{
//T obj = Activator.CreateInstance<T>();
//using (MemoryStream ms=new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))
//{
// DataContractJsonSerializer jsonSerializer=new DataContractJsonSerializer(obj.GetType());
// return (T) jsonSerializer.ReadObject(ms);
//}
var ser = new DataContractJsonSerializer(typeof(T));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr));
var obj = (T)ser.ReadObject(ms);
return obj;
}

但是json在客户端和浏览器传递之间时,如果传递的是实体类的json格式数据,则这类实体类应该用协议去定义,例如:

[DataContract]
public class MsgEntity
{
[DataMember(Order = ,IsRequired = true)]
public string Msg { get; set; } [DataMember(Order = , IsRequired = false)]
public string HtmlMsg { get; set; }
}

c#操作json的两种方式的更多相关文章

  1. Hadoop之HDFS文件操作常有两种方式(转载)

    摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HD ...

  2. flask 操作mysql的两种方式-sqlalchemy操作

    flask 操作mysql的两种方式-sqlalchemy操作 二.ORM sqlalchemy操作 #coding=utf-8 # model.py from app import db class ...

  3. flask 操作mysql的两种方式-sql操作

    flask 操作mysql的两种方式-sql操作 一.用常规的sql语句操作 # coding=utf-8 # model.py import MySQLdb def get_conn(): conn ...

  4. javascript总结40:DOM中操作样式的两种方式

    1 DOM中操作样式的两种方式 1 通过元素的style属性 注意: 通过style属性设置样式时,css中要写单位的属性,在js代码中也要加单位 //html <div id="bo ...

  5. Android开发之使用sqlite3工具操作数据库的两种方式

    使用 sqlite3 工具操作数据库的两种方式 请尊重他人的劳动成果,转载请注明出处:Android开发之使用sqlite3工具操作数据库的两种方式 http://blog.csdn.net/feng ...

  6. pb对Web Service的操作可使用两种方式实现

    从PB8.0/9.0开始,就已经提供Web Service Proxy功能,能够直接进行相关程序的编写. 但是,部分老项目使用PB6.5开发 研究后发现,其实PB6.5要操作Web Service也挺 ...

  7. Java中将xml文件转化为json的两种方式

    原文地址https://blog.csdn.net/a532672728/article/details/76312475 最近有个需求,要将xml转json之后存储在redis中,找来找去发现整体来 ...

  8. Django框架操作数据库的两种方式

    Django操作数据库的前提操作是成功连接数据库,详情见上篇:https://www.cnblogs.com/kristin/p/10791358.html Django查询数据库的方式一 from ...

  9. SpringMVC 返回json的两种方式

    前后台数据交互使用json是一种很重要的方式.本文主要探讨SpringMVC框架使用json传输的技术. 请注意,本文所提到的项目使用Spring 版本是4.1.7,其他版本在具体使用上可能有不一样的 ...

随机推荐

  1. opencart精简checkout购物流程

    最近在做一个商城项目,让外国朋友帮忙看看,他给我们一些建议了,其中他说Can You make more simple buying Button,3 step:Sign up :Shipping A ...

  2. Vue框架创建项目常遇到问题

    利用npm安装cnpm时出现的错误 npm WARN deprecated socks@1.1.10: If using 2.x branch, please upgrade to at least ...

  3. 运维面试题之k8s

    前言: 到了如今年k8s已经是事实上的容器集群标准了,是时候展现我真正的祖传k8s实力了 吐槽: 我干嘛要知道这些,能用不就行了k8s真香 Kubernetes有哪些特性? Kubernetes是自动 ...

  4. mysql-5.7.25 源码 安装

    mysql-5.7.25 源码 安装 编译 export INSTALL_PREFIX="/data/services" export MYSQL_INSTALL_PATH=&qu ...

  5. iOS深浅拷贝

    浅拷贝:你和你的影子,你改变,你的影子发生改变 深拷贝:你的克隆人,你改变,你的克隆人并不会发生变化 eg: NSString *string = @"我是一个小白鼠"; NSSt ...

  6. oracle - sqldeveloper 手动执行包 package的方法

    比如建立一个包头如下: create or replace PACKAGE LSG_OBC_ORDERS_HK01_EC_PKG AS PROCEDURE LSG_OBC_HK01_main( err ...

  7. 怎样的操作才能让HashMap以红黑树类型存储数据? (文中没有解答该问题)

    怎样才能让HashMap以红黑树类型存储数据? 看上面的代码可知:如果一个Node的长度大于等于7.就会触发Node转TreeNode的操作. 我向一个map中插入了一百万条数据(插入一亿条时,内存溢 ...

  8. vue-cli教程

    转:https://jspang.com/post/vue-cli2.html#toc-5ca

  9. flask 电子邮件Flask-Mail

    电子邮件 在web程序中,经常会需要发送电子邮件.比如,在用户注册账户时发送确认邮件:定期向用户发送热门内容或是促销信息等等.在Web程序中发送电子邮件并不复杂,借助扩展Flask-Mail或是第三方 ...

  10. Nginx 出现 _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/

    Nginx 出现  _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/ 这种情况是因为 application 没有足的权限 .需要给予777的权限就能解决了