JavaScriptSerializer,DataContractJsonSerializer解析JSON字符串功能小记-阿里云开发者社区

开发者社区> 技术mix呢> 正文

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:A
IDB:
0, NameB:
IDA:
0, NameA:
IDB:
0, NameB:
JavaScriptSerializer:
IDA:
1, NameA:A
B:
2,B
IDB:
0, NameB:
IDA:
0, NameA:
IDB:
0, NameB:

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




本文转自Artwl博客园博客,原文链接:http://www.cnblogs.com/artwl/,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
fastjson解析json字符串,key缺少双引号导致下游服务无法解析
背景说明 在使用fastjson 1.2.60版本将对象转化为json字符串时,为处理Map值为null的情况,采用了WRITE_MAP_NULL_FEATURES属性,但该属性解析出来的key中缺少双引号,在key包含特殊字符时,如“-”和“:",下游服务在进行反序列化时出现无法解析的错误,从而出现问题。
3060 0
JavaScript中字符串与Unicode编码的互相转换
JavaScript中字符串与Unicode编码的互相转换 这段代码演示了JavaScript中字符串与Unicode编码的转换: // 为了控制台的演示方便, 变量没有添加 var 定义 // 实际编程中请避免 // 字符串 str = "中文"; // 获取字符 char0 = str.
622 0
Java解析(读取)Json数据
以前看过书上说,XML是web service间传输信息的标准格式吧,就看了看XML。最近在做个网站,又说是有了JSON,第一回听说就看了看,总结总结一下。 1.JSON介绍   JSON比XML简单,主要体现在传输相同信息的情况下,文件的大小不同。
1521 0
直播平台建设过程中不可或缺的推送功能
App内的消息推送不仅能够给用户提供通知信息,提高用户活跃度,还能够起到召回一部分老用户的作用。那么在直播平台建设的过程中,关于第三方推送也就是我们所说的消息推送功能又该如何实现呢?
1207 0
TensorFlow新功能:TensorFlow Probability概率编程工具箱介绍
2018年,tensorflow开发者峰会上,tensorflow管理人员发布了:TensorFlow Probability——一种概率编程工具箱,用于机器学习研究人员和从业人员快速可靠地构建利用最先进硬件的复杂模型。快来学习一下吧~
3346 0
+关注
2969
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载