.net 实体类与json转换(.net自带类库实现)

注意要点。

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

时间: 2024-08-08 04:17:13

.net 实体类与json转换(.net自带类库实现)的相关文章

.net 实体类与json转换(.net自带类库实现)更新

上一篇文章中写到在.net中实体类跟json格式的相互转换,今天在做具体转换时候,发现之前版本的jsonhelp对于日期类型的转换不全面.之前版本的jsonhelp中从实体类转换成json格式时候,将日期格式转成了时间戳的形式.在这里对这个jsonhelp做出了更新.以解决转换日期类型字段的问题.代码如下: JsonHelp.cs using System; using System.Collections.Generic; using System.Linq; using System.Tex

fastjson简单使用demo,@JSONField注解属性字段上与set、get方法上。实体类toString(),实体类转json的区别;_下划线识别

一.demo代码 @JSONField注解属性字段上与set.get方法上.使用@Data注解(lombok插件安装最下方),对属性“笔名”[pseudonym]手动重写setter/getter方法 import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; @Data

实体类和JSON对象之间相互转化

. [代码]工具类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 package myUti

实体类转Json的2种方法

首先申明所需jar包: ezmorph-1.0.6.jar jackson-all-1.7.6.jar jsoup-1.5.2.jar 一.创建一个实体类Emp. 1 package com.hyx.entity; 2 3 public class Emp { 4 private Integer id; 5 private String name; 6 private Integer dptNo; 7 private String gender; 8 private String duty; 9

SpringMVC通过实体类返回json格式的字符串,并在前端显示

一.除了搭建springmvc框架需要的jar包外,还需要这两个jar包 jackson-core-asl-1.9.2.jar和jackson-mapper-asl-1.9.2.jar 二.web,.xml配置 classpath:spring-servlet.xml指定springmvc配置文件的位置 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" x

C# 实体类转json数据过滤掉字段为null的字段

原文:C# 实体类转json数据过滤掉字段为null的字段 C# 实体类转json数据过滤掉字段为null的字段 语法如下: var jsonSetting = new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore}; var json = JsonConvert.SerializeObject(data,Formatting.Indented,jsonSetting) 1,null值未处理之前的数据结构

AutoMapper(一)——实现数据契约和实体类之间的转换

以前做过Object到Object的转换方法的封装,底层主要还是靠反射取值赋值+循环来实现的.最近在公司里维护旧系统,这个系统使用了WCF,当时就很好奇他们的数据契约到实体模型的转换时怎么做的,之后查看源码,发现他们居然是一个属性一个属性的赋值过来的,当时就给我雷到了,难道就没有人举得这个地方可以封装起来吗? 据我目前了解,有三种方法可以实现这个实体类到实体类的转换过程,下面来简述下这三种方式. 第一种,也是最简单的一种,是用list自带的转换方法,但是这种方法需要自己定义转换规则,写起来也挺麻

.NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator

去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务的变化,也会碰到超级变态的JSON,如果还按照以前的思路,会把人搞抽风掉,一旦结构变化,又要重来.所以今天给大家介绍一个简单的方法,轻轻松松搞定超级变态的JSON,虽然需要生成实体类.它就是开源的:JSON C# Class Generator组件. .NET开源目录:[目录]本博客其他.NET开源

SpringMVC接收String类型时间数值(实体类是Date)转换

SpringMVC接收String类型字符串 bean实体是Date 加入bind @InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm