(转)JavaScriptSerializer,DataContractJsonSerializer解析JSON字符串功能小记

JsonAbout:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Web.Script.Serialization;using System.Runtime.Serialization.Json;

namespace ConsoleApplicationTest{    public class JsonAbout    {        public static T Json2ModelJS<T>(string JsonStr)        {            JavaScriptSerializer jss = new JavaScriptSerializer();            T userJson = jss.Deserialize<T>(JsonStr);            return userJson;        }

        public static string Model2JsonJS<T>(T model)        {            JavaScriptSerializer jss = new JavaScriptSerializer();            string userJson = jss.Serialize(model);            return userJson;        }

        public static T Json2Model<T>(string jsonString)        {            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))            {                return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);            }        }

        public static string Model2Json<T>(T jsonObject)        {            using (var ms = new MemoryStream())            {                new DataContractJsonSerializer(typeof(T)).WriteObject(ms, jsonObject);                return Encoding.UTF8.GetString(ms.ToArray());            }        }    }}

  测试类:

public class JsonModelDemo    {        public void Show()        {            string jsonA = "{\"IDA\":1,\"NameA\":\"A\",\"B\":{\"IDB\":2,\"NameB\":\"B\"}}";            string jsonB = "{\"Msg\":\"Test\",\"Data\":{\"IDA\":1,\"NameA\":\"A\",\"B\":[{\"IDB\":2,\"NameB\":\"B1\"},{\"IDB\":3,\"NameB\":\"B2\"}]}}";            Console.WriteLine("DataContractJsonSerializer:");            A a1 = JsonAbout.Json2Model<A>(jsonA);            B b1 = JsonAbout.Json2Model<B>(jsonA);            A a2 = JsonAbout.Json2Model<A>(jsonB);            B b2 = JsonAbout.Json2Model<B>(jsonB);            Output(a1);            Output(b1);            Output(a2);            Output(b2);

            Console.WriteLine("JavaScriptSerializer:");            A a3 = JsonAbout.Json2ModelJS<A>(jsonA);            B b3 = JsonAbout.Json2ModelJS<B>(jsonA);            A a4 = JsonAbout.Json2ModelJS<A>(jsonB);            B b4 = JsonAbout.Json2ModelJS<B>(jsonB);            Output(a3);            Output(b3);            Output(a4);            Output(b4);                  }

        private void Output(A a)        {            Console.WriteLine("IDA:"+a.IDA + ", NameA:" + a.NameA);            if (a.b != null)            {                Console.WriteLine("B:"+a.b.IDB+","+a.b.NameB);            }        }        private void Output(B b)        {            Console.WriteLine("IDB:" + b.IDB + ", NameB:" + b.NameB);        }    }    public class A    {        public int IDA { get; set; }

        public string NameA { get; set; }

        public B b { get; set; }    }

    public class B    {        public int IDB { get; set; }

        public string NameB { get; set; }    }

  输出:

DataContractJsonSerializer:IDA:1, NameA:AIDB:0, NameB:IDA:0, NameA:IDB:0, NameB:JavaScriptSerializer:IDA:1, NameA:AB:2,BIDB:0, NameB:IDA:0, NameA:IDB:0, NameB:

  结论:JavaScriptSerializer可以识别关联的实体,其他的待验证。

转: http://artwl.cnblogs.com

(转)JavaScriptSerializer,DataContractJsonSerializer解析JSON字符串功能小记

时间: 2024-10-09 20:15:36

(转)JavaScriptSerializer,DataContractJsonSerializer解析JSON字符串功能小记的相关文章

C#解析JSON字符串总结

JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]:这种方式是使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/).下载后添加dll引用就能用. 首先添加引用:using Newtonsoft.Json; 新增:本地dll下载:Newtonsoft.Json.rar   引用:using Newt

JS的全局函数eval解析JSON字符串函数

JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. 返回值 通过计算 string 得到的值(如果有的话). 说明 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回.因此请不要为 eval() 函数传递 String

jquery中解析JSON字符串的办法

data.msg传递了C#中构造的JSON字符串,使用下面两种在jquery中解析,都能正常工作 //解析返回的数据 var jsonValue = jQuery.parseJSON(data.msg); var jsonValue = eval('(' + data.msg + ')'); 附: /构造JSON字符串 string jsonStr = "{\"verifyOpinion\":\"" + temp.verifyResult + "

js jquery前台解析json字符串

一.js解析json字符串 eval()和JSON.parse() 对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,就是将该字符串放于eval()中执行一次.这种方式也适合以普通javascipt方式获取json对象,以下举例说明: var dataObj=eval("("+data+")");//转换为json对象 为什么eval这里要添加 "("+data+")&

通过Json和Gson,快速生成和解析json字符串

1,首先我们要先明白json与gson有什么区别 其实他们是完全不同的概念: json是一种数据格式,便于数据传输,存储,交换. gson则是一种组件库,就是通过Gson我们可以把java中的对象(gson.toJson()),转换成Json字符串,当然反过来也是可以的(gson.fromJson); 2,代码 首先我们需要JSon和Gson这两个jar包 package com.json.dome; import java.util.ArrayList;import java.util.Lis

Jquery解析json字符串、json数组

<!doctype html> <html> <head> <meta charset="utf-8"> <script src="../js/libs/jquery-1.6.2.min.js"></script> </head> <body> <hr /> <h3>解析json字符串.json数组</h3> <input typ

【Android进阶】Gson解析json字符串的简单应用

在客户端与服务器之间进行数据传输,一般采用两种数据格式,一种是xml,一种是json.这两种数据交换形式各有千秋,比如使用json数据格式,数据量会比较小,传输速度快,放便解析,而采用xml数据格式,如果使用SAX解析方式,则可以一边加载一边解析,对于数据量比较大的应用,比较适合.今天主要整理一下使用Gson解析json格式字符串的简单使用. 首先,必须导入外部包 /** * * @author ZhaoKaiQiang * * @time 2014年5月4日 */ public class J

SQLServer 解析JSON字符串

--------------------------------------------------- -----           解析字符串函数                ----- --------------------------------------------------- CREATE FUNCTION [dbo].[fn_split](@p_str VARCHAR(8000), @p_split VARCHAR(10)) RETURNS @tab TABLE(tid V

java多种方式解析json字符串

第一种:用net.sf.json硬解.缺点:要求字段名称和json字符串中的字段名一样,字段命名会违反驼峰规则,也不利于拓展: JSONArray jsonArray = JSONArray.fromObject(str);  JSONObject jObj = jsonArray.getJSONObject(0);  User user= (User)jObj.toBean(jObj,User.class); 第二种:用Gson解析json字符串.优点:写法简单,字段名称只要使用@Serial