通用Json的处理办法
1、Json的格式:
- 对象{"name": "value", "name1": "value1"}
- 对象包含对象数组{"name": "value", "name1": "value1","name3":[{"name4":"value4"},{"name5":"value5"}]}
- 对象数组[{"name": "value", "name1": "value1"},{"name2": "value2", "name3": "value3"}]
2、通用处理Json对象的C#类:DataContractJsonSerializer,命名空间:System.Runtime.Serialization.Json;
3、用一个控制台来显示,代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Person p1 = new Person { name = "LiLei", age = 12, skillArr = new[] { "C#", "Java" } };
Person p2 = new Person { name = "Jim", age = 13, skillArr = new[] { "ASP.NET", "Javascript" }, friends = new List<Person> { p1 } };
string p1Str = JsonHelp.strJson<Person>(p1);
string p2Str = JsonHelp.strJson<Person>(p2);
string p3Str = JsonHelp.strJson<List<Person>>(new List<Person> { p1, p2 });
Console.WriteLine(p1Str);
Console.WriteLine(p2Str);
Console.WriteLine(p3Str);
Person pObj1 = JsonHelp.Parse<Person>(p1Str);
Console.WriteLine(pObj1.GetType().ToString());
Person pObj2 = JsonHelp.Parse<Person>(p2Str);
Console.WriteLine(pObj2.GetType().ToString());
List<Person> pObj3 = JsonHelp.Parse<List<Person>>(p3Str);
Console.WriteLine(pObj3.GetType().ToString());
Console.ReadLine();
}
}
[DataContract]
internal class Person
{
[DataMember]
public string name { get; set; }
[DataMember]
public int age { get; set; }
[DataMember]
public string[] skillArr { get; set; }
[DataMember]
public List<Person> friends { get; set; }
}
internal static class JsonHelp
{
internal static T Parse<T>(string jsonStr)
{
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))
{
return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
}
}
internal static string strJson<T>(T jsonObj)
{
using (MemoryStream ms = new MemoryStream())
{
new DataContractJsonSerializer(jsonObj.GetType()).WriteObject(ms, jsonObj);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
}
}
最新文章
- mvc过滤器学习(1)
- ( 译、持续更新 ) JavaScript 上分小技巧(二)
- 20145212 实验三《敏捷开发与XP实践》
- [译] UML中的关系之Dependency
- Java学习-040-级联删除目录中的文件、目录
- JAVA-面向对象-继承
- PHP strrpos strpos strstr strrchr 区别
- ifndef/define/endif 的作用
- OpenCV2学习笔记02:MSVC2013搭建OpenCV开发环境
- Linux makefile 教程 非常详细,且易懂(转)
- sql server日期字段值的比较
- PLECS—直流电机系统2
- 简单的redis 的list应用
- ionic toggle点击返回true/false支持自定义
- mysql增删改查练习
- Js中的判空
- 解决javamail ssl 测试unable to find valid certification path to requested target
- 9.12DjangoORM回顾和路由.
- Python3基础 str partition 以参数字符串切分字符串,只切分为三部分
- SVN图形客户端上传静态库.a文件失败