using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.datacontractattribute.aspx
//using System.Web.Script.Serialization;
using System.Text;
using System.IO;
using System.Runtime;
using System.Runtime.Serialization;// 添加 System.Runtime.Serialization
using System.Runtime.Serialization.Json;//添加 System.ServiceModel和System.ServiceModel.Web的引用
using System.Xml;
using System.Runtime.Serialization.Formatters; namespace JsonNetDemo
{
public partial class WebForm1 : System.Web.UI.Page
{
string dataString = string.Empty; /// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{ }
/// <summary>
/// 对象转化为JSON字符串
/// http://www.cnblogs.com/coderzh/archive/2008/11/25/1340862.html
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
var config = new JsonConfig()
{
encoding = "UTF-8",
plugins = new string[] { "Java", "C++", "C#" },
indent = new Indent() { length = 4, use_space = false }
}; var serializer = new DataContractJsonSerializer(typeof(JsonConfig));
var stream = new MemoryStream();
serializer.WriteObject(stream, config); byte[] dataBytes = new byte[stream.Length]; stream.Position = 0; stream.Read(dataBytes, 0, (int)stream.Length); dataString = Encoding.UTF8.GetString(dataBytes); Response.Write("JSON string is:");
Response.Write(dataString);
}
/// <summary>
/// JSON字符串转对象
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button2_Click(object sender, EventArgs e)
{
var config = new JsonConfig()
{
encoding = "UTF-8",
plugins = new string[] { "Java", "C++", "C#" },
indent = new Indent() { length = 4, use_space = false }
}; var serializer = new DataContractJsonSerializer(typeof(JsonConfig));
var stream = new MemoryStream();
serializer.WriteObject(stream, config); byte[] dataBytes = new byte[stream.Length]; stream.Position = 0; stream.Read(dataBytes, 0, (int)stream.Length); dataString = Encoding.UTF8.GetString(dataBytes); //var serializer = new DataContractJsonSerializer(typeof(JsonConfig));
var mStream = new MemoryStream(Encoding.Default.GetBytes(dataString));
JsonConfig readConfig = (JsonConfig)serializer.ReadObject(mStream); Response.Write(string.Format("Encoding is: {0}", readConfig.encoding));
foreach (string plugin in readConfig.plugins)
{
Response.Write(string.Format("plugins is: {0}", plugin));
}
Response.Write(string.Format("indent.length is: {0}", readConfig.indent.length));
Response.Write(string.Format("indent.use_space is: {0}", readConfig.indent.use_space));
}
} [DataContract(Name = "Customer", Namespace = "JsonNetDemo")]
class JsonConfig
{
[DataMember(Order = 0)]
public string encoding { get; set; }
[DataMember(Order = 1)]
public string[] plugins { get; set; }
[DataMember(Order = 2)]
public Indent indent { get; set; }
} [DataContract(Name = "Customer", Namespace = "JsonNetDemo")]
class Indent
{
[DataMember(Order = 0)]
public int length { get; set; }
[DataMember(Order = 1)]
public bool use_space { get; set; }
}
}

csharp:.net 3.5 using System.Runtime.Serialization.Json read json的更多相关文章

  1. C# Serialization performance in System.Runtime.Serialization.Formatters.Binary.BinaryFormatter,Newtonsoft.Json.JsonConvert and System.Text.Json.JsonSerializer.Serialize

    In .net core 3.0 using System;using System.Collections.Generic;using System.Collections;using System ...

  2. 找不到方法:“Boolean System.Runtime.Serialization.DataContractAttribute.get_IsReference()”的解决办法

    找不到方法:“Boolean System.Runtime.Serialization.DataContractAttribute.get_IsReference()”.的解决办法站点发布后部署到了两 ...

  3. 重写成员“log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)”时违反了继承安全性规则

    在.NET 4.0下使用最新版本的log4Net 1.2.10,会遇到下面这样的错误: 重写成员“log4net.Util.ReadOnlyPropertiesDictionary.GetObject ...

  4. 找不到System.Runtime.Serialization.Json的解决方案

    System.ServiceModel System.ServiceModel.Web System.Runtime.Serialization 三者均要添加引用

  5. 引用System.Runtime.Serialization.Json

    vs2012下,重新添加一次System.Runtime.Serialization的引用

  6. 基础命名空间:序列化_自定义序列化 System.Runtime.Serialization

    (  (From Msdn) 自定义序列化是控制类型的序列化和反序列化的过程,通过控制序列化,可以确保序列化兼容性.换而言之,在不中断类型核心功能的情况下,可在类型的不同版本之间序列化和反序列化. 重 ...

  7. 基础命名空间:序列化 System.Runtime.Serialization

    对象通常都有状态(state),从一个对象中抽取这种状态,不论是将它存储于某地,还是通过网络传送,这种抽取动作称为“将一个对象序列化”,而反向处理过程,从一个被序列化的状态重建一个对象即为反序列化. ...

  8. System.Runtime.Serialization.SerializationException”类型的未经处理的异常在 System.Runtime.Serialization.dll 中发生

    异常信息: “System.Runtime.Serialization.SerializationException”类型的未经处理的异常在 System.Runtime.Serialization. ...

  9. System.Runtime.Serialization.cs

    ylbtech-System.Runtime.Serialization.cs 允许对象控制其自己的序列化和反序列化过程. 1.返回顶部 1. #region 程序集 mscorlib, Versio ...

随机推荐

  1. nginx高性能WEB服务器系列之三版本升级

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  2. java集合线程安全测试

    package com.cxy; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import ...

  3. [HDU4035] Maze(概率DP)

    HDU4035 有\(n\)个房间 , 由\(n-1\)条隧道连通起来 , 实际上就形成了一棵树 , 从结点\(1\)出发 , 开始走 , 在每个结点\(i\)都有\(3\)种可能 : \(1.\)被 ...

  4. 在使用Vue搭建前端服务器时,路由出现#号的解决办法

    路由模式解析 这里要讲vue-router的路由模式,首先要了解的一点就是路由是由多个URL组成的,使用不同的URL可以相应的导航到不同的位置.如果有进行过服务器开发或者对http协议有所了解就会知道 ...

  5. 对java的理解

    一门编程语言,分三部分. 核心语法,库,数据结构.

  6. A problem has been detected and windows has been shut down to prevent damage

    问题描述 问题解决 参考百度经验, 未解决,重装系统,U盘启动解决.过程可以参考上一篇博文.

  7. DP Intro - poj 1947 Rebuilding Roads

    算法: dp[i][j]表示以i为根的子树要变成有j个节点的状态需要减掉的边数. 考虑状态转移的时候不考虑i的父亲节点,就当不存在.最后统计最少减去边数的 时候+1. 考虑一个节点时,有两种选择,要么 ...

  8. (转)基于keepalived搭建MySQL的高可用集群

    基于keepalived搭建MySQL的高可用集群  原文:http://www.cnblogs.com/ivictor/p/5522383.html MySQL的高可用方案一般有如下几种: keep ...

  9. QQ游戏--捕鱼假日竞技港对抗岛自动刷贝壳辅助使用教程和下载地址

    首先解压缩到D盘根目录 再进入buyujiari文件夹双击 然后打开QQ游戏,进入竞技港-->对抗岛,到达开始准备的界面 再打开  辅助.exe 360对按键精灵的一个文件会提示病毒,可不用理会 ...

  10. emacs 配置 clojure

    安装JDK,Version >= 6.0 java -version 2 安装EMACS,Version>=24 在脚本~/.emacs.d/init.el中增加如下内容 (require ...