通用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());
}
}
}
}
通用Json的处理办法的更多相关文章
- [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类
[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能 ...
- 一个.NET通用JSON解析/构建类的实现(c#)转
转自:http://www.cnblogs.com/xfrog/archive/2010/04/07/1706754.html NET通用JSON解析/构建类的实现(c#) 在.NET Framewo ...
- Atitit 纯java项目的提升进度大法---通用json dsl接口
Atitit 纯java项目的提升进度大法---通用json dsl接口 1. Json dsl接口1 1.1. Url: http://aaa.com/api_jsondsl?dsl={}1 1. ...
- 一个.NET通用JSON解析/构建类的实…
一个.NET通用JSON解析/构建类的实现(c#) 在.NET Framework 3.5中已经提供了一个JSON对象的序列化工具,但是他是强类型的,必须先按JSON对象的格式定义一个类型,并将类型加 ...
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
C#字符串数组排序 //排序只带字符的数组,不带数字的 private string[] aa ={ "a ", "c ", "b & ...
- C# Net 通用json转Object(对象)
C# Net 通用 json 转 Object 对象 C# Net 提取 json 字符串 对象 数组 C# Net json 对象 中有字符串 转为 对象 例如输入:{"1" ...
- TypeError: datetime.datetime(2016, 9, 25, 21, 12, 19, 135649) is not JSON serializable解决办法
1.一个简单的方法来修补json模块,这样序列将支持日期时间. import json import datetime json.JSONEncoder.default = lambda self, ...
- IIS6配置后仍然无法解析json文件解决办法
两台服务器,都是Windows Server2003,照着以下办法设置后,一台可以访问到json文件,一台不可以. 1. MIME设置: 在IIS的站点属性的HTTP头设置里,选MIME 映射中点击” ...
- TypeError: datetime.datetime(2016, 9, 25, 21, 12, 19, 135649) is not JSON serializable解决办法(json无法序列化对象的解决办法)
1.一个简单的方法来修补json模块,这样序列将支持日期时间. import json import datetime json.JSONEncoder.default = lambda self, ...
随机推荐
- http协议及http协议和tcp协议的区别
http是应用层的协议,并且无连接,无状态的协议. http协议的特点: 1.支持c/s模式 2.简单快速:客户端向服务器端传送数据的时候,只需要发送请求方法和路径,请求方法有:post,get,he ...
- 限制输入字符个数的jq插件
(function($) { $.fn.extend( { limiter: function(limit, elem) { $(this).on("keyup focus", f ...
- python 网络爬虫框架scrapy使用说明
1 创建项目scrapy startproject tutorial 2 定义Itemimport scrapyclass DmozItem(scrapy.Item): title = scra ...
- python链接mysql以及mysql中对表修改的常用语法
MySQL是一个关系型数据库管理系统 ,其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库.在使用过程中不总是和它打交道,导致使用时候都得 ...
- Java实现蛇形矩阵
public class Solution { //下x++ 左y-- 上x-- 右y++ public void prints(int n) { int[][] mp = new int[n][n] ...
- 洛谷——P3908 异或之和
P3908 异或之和 题目描述 求1 \bigoplus 2 \bigoplus\cdots\bigoplus N1⨁2⨁⋯⨁N 的值. A \bigoplus BA⨁B 即AA , BB 按位异或. ...
- Codeforces Round #307 (Div. 2) E. GukiZ and GukiZiana(分块)
E. GukiZ and GukiZiana time limit per test 10 seconds memory limit per test 256 megabytes input stan ...
- 【动态规划】windy数
BZOJ1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 7893 Solved: 3559[Submit] ...
- 【线段树(单点修改,区间求和)】HDU1166 - 敌军布阵
hdu1166 敌兵布阵,单点修改,区间求和. [ATTENTION]MAXN要开成节点数的4倍,开得不够会提示TLE. #include<iostream> #include<cs ...
- bzoj 1433: [ZJOI2009]假期的宿舍
1433: [ZJOI2009]假期的宿舍 Description Input Output Sample Input 1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 Sample ...