c#对象与json字符串互相转换的几种方式

泥沙      2022-02-17     480

关键词:

 
 

随着 Rest 风格 API 的应用越来越广泛,对象与JSON字符串互相转换的功能也用的越来越多。这里介绍三种方法,期中两种为DotNet Framework .NET 3.5 及后续版本自带的 DataContractJsonSerializer、 JavaScriptSerializer,另一种为 Newtonsoft.Json.dll ,我选择它的原因是因为它支持 DotNet Framework .NET 2.0。

 

方法一、DoNet2.0 需要借助于Newtonsoft.Json.dll

我使用的版本是:Version 10.0.3

 

[csharp] view plain copy
 
        // 从一个对象信息生成Json串
        public static string ObjectToJson(object obj)
        {
            return JsonConvert.SerializeObject(obj);
        }
        // 从一个Json串生成对象信息
        public static object JsonToObject(string jsonString, object obj)
        {
            return JsonConvert.DeserializeObject(jsonString, obj.GetType());
        }

  

 

 

方法二、DataContractJsonSerializer

[csharp] view plain copy
 
        /// <summary>
        /// Json转换成对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="jsonText"></param>
        /// <returns></returns>
        public static T JsonToObject<T>(string jsonText)
        {
            // Framework 2.0 不支持
            DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(T));
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText));
            T obj = (T)s.ReadObject(ms);
            ms.Dispose();
            return obj;


        }


        /// <summary>
        /// 对象转换成JSON
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ObjectToJSON<T>(T obj)
        {
            // Framework 2.0 不支持
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
            string result = string.Empty;
            using (MemoryStream ms = new MemoryStream())
            {
                serializer.WriteObject(ms, obj);
                ms.Position = 0;

                using (StreamReader read = new StreamReader(ms))
                {
                    result = read.ReadToEnd();
                }
            }
            return result;
        }

  

 

[csharp] view plain copy
 

 

方法三、JavaScriptSerializer

 

[csharp] view plain copy
 
public static void JsonMy(string json)
        {                     
            JavaScriptSerializer js = new JavaScriptSerializer();   //实例化一个能够序列化数据的类
            ToJsonMy list = js.Deserialize<ToJsonMy>(json);    //将json数据转化为对象类型并赋值给list
            string result = list.result;
            string res_info = list.res_info;
            string queryorder_info = list.res_info;
        }

        public static void JsonMy4(string json)
        {
            JavaScriptSerializer js = new JavaScriptSerializer();   //实例化一个能够序列化数据的类
            ToJsonMy3 list = js.Deserialize<ToJsonMy3>(json);    //将json数据转化为对象类型并赋值给list
            string result = list.result;
            string res_info = list.res_info;
            string order_num = list.queryorder_info.order_num;
            List<orderdetail> orderdetail = list.queryorder_info.orderdetail;
            string CFTUin = orderdetail[0].CFTUin;
            string HotelName = orderdetail[0].HotelName;
            string ListID = orderdetail[1].ListID;
            string State = orderdetail[2].State;
        }

  

 

前台json对象转换成字符串相互转换的几种方式

   在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用request进行接收。有时传递了几... 查看详情

c#对象与json串互相转换

DoNet2.0需要借助于Newtonsoft.Json.dll1代码23usingSystem;4usingSystem.IO;5usingSystem.Text;6usingNewtonsoft.Json;78namespaceOfflineAcceptControl.UCTools9{10publicclassJsonTools11{12//从一个对象信息生成Json串13publicsta 查看详情

gson的几种使用方式

...a对象转换为它们所代表的JSON数据,也可以用于将一个JSON字符串转换为对应的Java对象。这个是谷歌开发的一套针对json处理的一个类库,功能很强大。二、jar引入  <dependency><groupId>com.google.code.gson</groupId><artifactI... 查看详情

在c#中,json的序列化和反序列化的几种方式总结

在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据,以及如何反序列化Json数据到对象。首先,解释一下json Json【javascript对象表示方法】,它是一个轻量级的数据交换格式,我们可以很简单的来读取... 查看详情

c#中判断对象为空的几种方式(字符串等)

(1)先了解几个与空类型相关的关键字和对象   Null:   关键字表示不引用任何对象的空引用,它是所有引用类型变量的默认值,在2.0版本之前也就只有引用变量类型可以为null,如(stringa=null)但在c#2.0版本之后... 查看详情

c#解析json的几种办法

...ar/archive/2010/07/13/parse-json-via-csharp.html刚开始只是想找一个转换JSON数组的方法,结果在MSDN翻到一大把。搜索过程中免不了碰到一大堆名词:WCF=>DataContract=>DataMember=>DataContractJsonSerializer,然后就是不停的引入 查看详情

json与javabean转换的几种形式

...法之一,以下列出了常用的几种形态以及与Javabean之间的转换:  Stringjson1="{‘name‘:‘zhangsan‘,‘age‘:23,‘interests‘:[{‘interest‘:‘篮球‘,‘colors‘:[‘绿色‘,‘黄色‘]},{‘interest‘:‘足球‘,‘colors‘:[‘红色‘,‘蓝色‘]}... 查看详情

javascript中的几种继承方式对比

... 从’严格’意义上说,JavaScript并不是一门真正的面向对象语言。这种说法原因一般都是觉得javascript作为一门弱类型语言与类似Java或c#之类的强型语言的继承方式有很大的区别,因而默认它就是非主流的面向对象方式,甚至竟... 查看详情

automapper实现对象转换的几种方式

namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){//1.普通转换Namename1=newName(){FirstName="L",LastName="jz"};Mapper.CreateMap<Name,NameDto>().BeforeMap((name,nameDto)=>Cons 查看详情

c#对象与json字符串的相互转换

程序使用.NETFramework提供的JavaScriptSerializer类进行序列化和反序列化操作,需要引用.NETFramework中的System.Web.Extensions程序集。对于直接进行DataTable类型对象的转换会出现“序列化类型为“System.Reflection.RuntimeModule”的对象时检测到循... 查看详情

字符串转化为对象的方法

字符串转化为对象的几种方法1>jQuery插件支持的转换方式:$.parseJSON(jsonstr);//jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2>浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:JSON.parse(jsonstr);//可... 查看详情

javascript(js)创建对象的模式与继承的几种方式

1.js创建对象的几种方式工厂模式为什么会产生工厂模式,原因是使用同一个接口创建很多对象,会产生大量的重复代码,为了解决这个问题,产生了工厂模式。functioncreatePerson(name,age,job){   varo=newObject();   o... 查看详情

json_常用类json与对象的互相转换typereference泛型遇到的坑(代码片段)

....JSON.toJSONString的坑①.fastJson-常用类①.fastJson对于json格式字符串的解析主要用到了一下三个类:JSON:fastJson的解析器,用于JSON格式 查看详情

json_常用类json与对象的互相转换typereference泛型遇到的坑(代码片段)

....JSON.toJSONString的坑①.fastJson-常用类①.fastJson对于json格式字符串的解析主要用到了一下三个类:JSON:fastJson的解析器,用于JSON格式 查看详情

js创建对象的几种方式

简写 作为一个java程序员,习惯了java创建对象严格的语法方式,看到js灵活创建对象的方式,难免有些困惑,现在就来总结下js创建对象的几种方式1、第一种json的方式(推荐),比较通俗易懂<script>varCat={};//JSONCat.name="jacky... 查看详情

json.parseobject的几种用法

参考技术A以下只是草稿,较粗糙,详细的用法请参考:一.result格式:二.result格式:三.result格式:JSON转javaBean1.1JSONobject=>javaBean1.2String转javaBean见:FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换 查看详情

javascript创建对象的几种方式

javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON;但写法有很多种,也能混合使用。主要为下面几种:1、对象字面量的方式person={firstname:"Mark",lastname:"Yun",age:25,eyecolor:"black"};2、用function来模... 查看详情

c#中删除字符串最后一个字符串的几种方式(代码片段)

1,使用TrimEnd  例如:  stringa="a,b,c,d,e,f,";  a=a.TrimEnd(‘,‘);//移除最后的逗号  注意:使用TrimEnd移除的时候,如果传递的是字符型数组参数。移除的是字符型数组中的每一个字符,而不是整体。  strings="fromtableunionall... 查看详情