注意要点。
1.jsonhelp编写时候添加的引用。System.Runtime.Serialization.Json;
2.实体类需声明为public
jsonhelp代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization.Json;
using System.IO;
namespace JsonTest
{
class JsonHelp
{
public JsonHelp()
{
//
// TODO: Add constructor logic here
//
}
/// <summary>
/// 把对象序列化 JSON 字符串
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="obj">对象实体</param>
/// <returns>JSON字符串</returns>
public static string GetJson<T>(T obj)
{
//记住 添加引用 System.ServiceModel.Web
/**
* 如果不添加上面的引用,System.Runtime.Serialization.Json; Json是出不来的哦
* */
DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
json.WriteObject(ms, obj);
string szJson = Encoding.UTF8.GetString(ms.ToArray());
return szJson;
}
}
/// <summary>
/// 把JSON字符串还原为对象
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="szJson">JSON字符串</param>
/// <returns>对象实体</returns>
public static T ParseFormJson<T>(string szJson)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream (Encoding.UTF8.GetBytes(szJson)))
{
DataContractJsonSerializer dcj = new DataContractJsonSerializer(typeof(T));
return (T)dcj.ReadObject(ms);
}
} }
}
实体类代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace JsonTest
{
public class testData
{
public testData()
{
}
public int Id { get; set; }
public string Name { get; set; }
public string Sex { get; set; }
}
}
控制台应用程序测试代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace JsonTest
{
class Program
{
static void Main(string[] args)
{
//实体类转json
testData t1 = new testData();
t1.Id = 1;
t1.Name = "001姓名";
t1.Sex = "男";
testData t2 = new testData();
t2.Id = 2;
t2.Name = "002姓名";
t2.Sex = "男";
testData t3 = new testData();
t3.Id = 3;
t3.Name = "003姓名";
t3.Sex = "男";
List<testData> tlist = new List<testData>();
tlist.Add(t1);
tlist.Add(t2);
tlist.Add(t3);
Console.WriteLine(JsonHelp.GetJson<List<testData>>(tlist));
// Console.ReadKey();
//json转实体类 List<testData> tl = JsonHelp.ParseFormJson <List<testData>>(JsonHelp.GetJson<List<testData>>(tlist));
Console.WriteLine(tl.Count);
Console.WriteLine(tl[0].Name);
Console.ReadKey(); }
}
}
在查找资料过程中参考了一下同学的博文
http://www.cnblogs.com/jinho/archive/2010/04/18/1715044.html
http://blog.csdn.net/wang_cel/article/details/44587201
.net 实体类与json转换(.net自带类库实现)的更多相关文章
-
.net 实体类与json转换(.net自带类库实现)更新
上一篇文章中写到在.net中实体类跟json格式的相互转换,今天在做具体转换时候,发现之前版本的jsonhelp对于日期类型的转换不全面.之前版本的jsonhelp中从实体类转换成json格式时候,将 ...
-
实体类和json互相转换
/// <summary> /// 将实体类转换为json数据 /// </summary> /// <returns></returns> publi ...
-
使用FastJson对实体类和Json还有JSONObject之间的转换
1. 实体类或集合转JSON串 String jsonString = JSONObject.toJSONString(实体类); 2.JSON串转JSONObject JSONObject json ...
-
ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段
ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...
-
fastjson简单使用demo,@JSONField注解属性字段上与set、get方法上。实体类toString(),实体类转json的区别;_下划线-减号大小写智能匹配
一.demo代码 @JSONField注解属性字段上与set.get方法上.使用@Data注解(lombok插件安装最下方),对属性“笔名”[pseudonym]手动重写setter/getter方法 ...
-
XML文件与实体类的互相转换
XML文件与实体类的互相转换 一.将XML文件反序列化为实体类对象 1. 通常程序的配置信息都保存在程序或者网站的专门的配置文件中(App.config/web.config).但是现在为了演示XML ...
-
实体类转Json的2种方法
首先申明所需jar包: ezmorph-1.0.6.jar jackson-all-1.7.6.jar jsoup-1.5.2.jar 一.创建一个实体类Emp. package com.hyx.en ...
-
SpringMVC通过实体类返回json格式的字符串,并在前端显示
一.除了搭建springmvc框架需要的jar包外,还需要这两个jar包 jackson-core-asl-1.9.2.jar和jackson-mapper-asl-1.9.2.jar 二.web,. ...
-
C# 实体类转json数据过滤掉字段为null的字段
C# 实体类转json数据过滤掉字段为null的字段 语法如下: var jsonSetting = new JsonSerializerSettings {NullValueHandling = N ...
随机推荐
-
【zz】面试题之寻找丢失的数字
据传说是MS/Google等等IT名企业的面试题: 有一组数字,从1到n,中减少了一个数,顺序也被打乱,放在一个n-1的数组里 请找出丢失的数字,最好能有程序,最好算法比较快 BTW1: 有很多种方法 ...
-
fuck--Fix git command line spelling errors GitHub
修复Git输入错误,挺有意思.git命令关键字如果输入错误,会提示最接近的正确关键字,如果提示内容是你想要的,输入'fuck',就能执行了. GitHub源码.源码生成exe,windows上运行. ...
-
Maven学习总结(八)——使用Maven构建多模块项目
在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层).dao(数据库访问层).service(业务逻辑层).web(表现层),这样分层之 ...
-
一个Cmake的例子
命令查询列表:http://www.cmake.org/cmake/help/v3.2/manual/cmake-commands.7.html # # Official dependency num ...
-
Oracle_单行函数
Oracle_单行函数 --dual是一张虚拟表,用于做测试 select sysdate from dual; select from dual; 字符函数initcap(),lower(), ...
-
codeforces877c
C. Slava and tanks time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
-
在 Laravel 5 中集成七牛云存储实现云存储功能
本扩展包基于https://github.com/qiniu/php-sdk开发,是七牛云储存 Laravel 5 Storage版,通过本扩展包可以在Laravel 5中集成七牛云存储功能. 1 ...
-
hibernate+spring整合增删改事务错误
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read ...
-
html5-audio 播放列表和自动播放
一个简单audio的列表和播放小例子 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
-
使用navigator.userAgent来进行浏览器嗅探
/*--------------------------------------------------------------------------------* * 功能描述:使用navigat ...