JSON中JObject和JArray,JValue序列化(Linq)
http://blog.csdn.net/lovegonghui/article/details/50293629
一、JObject和JArray序列化
1.实例化JArray和JObject,然后序列化
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data;
- using GongHuiNewtonsoft.Json.Linq;
- namespace JSONDemo
- {
- class Program
- {
- static void Main(string[] args)
- {
- JArray array = new JArray();
- array.Add("GongHui Linq");
- array.Add(new DateTime(2015, 12, 14));
- JObject o = new JObject();
- o["myArray"] = array;
- string json = o.ToString();
- Console.WriteLine(json);
- }
- }
- }
2.运行结果
二、JObject和JArray使用C#集合初始化语法序列化
1.使用C#集合初始化语法,并序列化
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data;
- using GongHuiNewtonsoft.Json.Linq;
- namespace JSONDemo
- {
- class Program
- {
- static void Main(string[] args)
- {
- JObject o = new JObject
- {
- {"CPU","Intel"},
- {"Memory",2048},
- {
- "Drives",new JArray
- {
- "DVD",
- "U盘"
- }
- }
- };
- Console.WriteLine(o.ToString());
- }
- }
- }
2.运行结果
三、使用Linq创建JObject和JArray序列化
1.创建一个Post对象,添加构造函数。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace JSONDemo
- {
- public class Post
- {
- public string Title { get; set; }
- public string Description { get; set; }
- public string Link { get; set; }
- public IList<string> Categories { get; set; }
- public Post()
- {
- Categories = new List<string>();
- }
- }
- }
2.实例化Post,然后声明一个对象列表。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data;
- using GongHuiNewtonsoft.Json.Linq;
- namespace JSONDemo
- {
- class Program
- {
- static void Main(string[] args)
- {
- Post p1=new Post();
- p1.Title="张五";
- p1.Description="张五的五一";
- p1.Link="http://www.zhuangwu.com";
- p1.Categories.Add("天地不仁");
- IList<Post> posts=new List<Post>();
- posts.Add(p1);
- JObject o = new JObject(
- new JProperty("channel",
- new JObject(
- new JProperty("title","龚辉"),
- new JProperty("link","http://blog.csdn.net/lovegonghui/article/details/50293629"),
- new JProperty("description","龚辉的博客"),
- new JProperty("item",
- new JArray(
- from p in posts
- orderby p.Title
- select new JObject(
- new JProperty("title",p.Title),
- new JProperty("description",p.Description),
- new JProperty("link",p.Link),
- new JProperty("categories",
- new JArray(
- from c in p.Categories
- select new JValue(c)))
- )
- )
- )
- )
- )
- );
- Console.WriteLine(o.ToString());
- }
- }
- }
3.运行的结果
四、使用C#的dynamic序列化
1.创建一个对象Address.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.ComponentModel;
- namespace JSONDemo
- {
- public class Address
- {
- public string Province { get; set; }
- public string City { get; set; }
- public string County { get; set; }
- public IList<string> Villages { get; set; }
- }
- }
2.序列化
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data;
- using GongHuiNewtonsoft.Json.Linq;
- namespace JSONDemo
- {
- class Program
- {
- static void Main(string[] args)
- {
- dynamic address = new JObject();
- address.Province = "GuangDong";
- address.City = "GuangZhou";
- address.County = "PanYu";
- address.Villages = new JArray("大龙村", "小龙村");
- Console.WriteLine(address.ToString());
- }
- }
- }
3.运行的结果
五、使用JTokenWriter序列化
1.首先使用JTokenWriter写入属性与值,数组。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data;
- using GongHuiNewtonsoft.Json.Linq;
- namespace JSONDemo
- {
- class Program
- {
- static void Main(string[] args)
- {
- JTokenWriter writer = new JTokenWriter();
- writer.WriteStartObject();
- writer.WritePropertyName("Title");
- writer.WriteValue("薄谷开来案???");
- writer.WritePropertyName("Detail");
- writer.WriteStartArray();
- writer.WriteValue("Yes");
- writer.WriteValue("No");
- writer.WriteValue("Unknown");
- writer.WriteEndArray();
- writer.WriteEndObject();
- JObject o = (JObject)writer.Token;
- Console.WriteLine(o.ToString());
- }
- }
- }
2.运行的结果
六、使用JToken.FromObject(object)把.NET值转换成JSON中Linq序列化
1.先创建一个Address对象.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.ComponentModel;
- namespace JSONDemo
- {
- public class Address
- {
- public string Province { get; set; }
- public string City { get; set; }
- public string County { get; set; }
- public IList<string> Villages { get; set; }
- }
- }
2.序列化操作
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data;
- using GongHuiNewtonsoft.Json.Linq;
- namespace JSONDemo
- {
- class Program
- {
- static void Main(string[] args)
- {
- JValue i = (JValue)JToken.FromObject(123);
- Console.WriteLine(i.Type);
- Console.WriteLine(i.ToString());
- JValue s = (JValue)JToken.FromObject("GongHui");
- Console.WriteLine(s.Type);
- Console.WriteLine(s.ToString());
- Address address = new Address
- {
- City = "GuangZhou",
- Province = "GuangDong",
- County = "ShiQiao",
- Villages = new List<string>
- {
- "维和",
- "防稳"
- }
- };
- JObject o = (JObject)JToken.FromObject(address);
- Console.WriteLine(o.ToString());
- }
- }
- }
3.运行结果
七、匿名类型创建一个JObject序列化
1.先创建一个Post对象
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace JSONDemo
- {
- public class Post
- {
- public string Title { get; set; }
- public string Description { get; set; }
- public string Link { get; set; }
- public IList<string> Categories { get; set; }
- }
- }
2.实例化对象Post,然后使用JObject.FromObject(object)创建一个匿名类型对象channel
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data;
- using GongHuiNewtonsoft.Json.Linq;
- namespace JSONDemo
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<Post> posts = new List<Post>
- {
- new Post
- {
- Title="匿名类型",
- Description="匿名类型创建一个JObject",
- Link="http://write.blog.csdn.net/postedit/50293629",
- Categories=new List<string>
- {
- "JObject",
- "匿名类型"
- }
- }
- };
- JObject o = JObject.FromObject(new
- {
- channel = new
- {
- title = "Linq的测试",
- link = "http://www.microsoft/Linq.com",
- description = "这是JOSN在Linq在的测试",
- item =
- from p in posts
- orderby p.Title
- select new
- {
- title=p.Title,
- link=p.Link,
- description=p.Description,
- categories=p.Categories
- }
- }
- }
- );
- Console.WriteLine(o.ToString());
- }
- }
- }
3.运行的结果
JSON源代码下载地址:http://download.csdn.net/detail/lovegonghui/9342751
JSON中JObject和JArray,JValue序列化(Linq)的更多相关文章
- JSON中JObject和JArray的修改
一.JObject 和JArray的添加.修改.移除 1.先添加一个json字符串,把json字符串加载到JObject中,然后转换成JObject.根据索引修改对象的属性值,移除属性,添加属性 us ...
- json中jobject
Json.net codeplex :http://www.codeplex.com/Json 原本感觉Newtonsoft.Json和.net自己的JavaScriptSerializer相差无几, ...
- Json to JObject转换的使用方法
Linq to JSON是用来操作JSON对象的.可以用于快速查询,修改和创建JSON对象.当JSON对象内容比较复杂,而我们仅仅需要其中的一小部分数据时,可以考虑使用Linq to JSON来读取和 ...
- Newtonsoft.Json中的时间格式详解.
Newtonsoft.json是一款不错的序列化反序列化第三方组件,具体如何使用属于基础知识,此处不再讲解.看以下代码: public class OutgameEntity { public str ...
- MVC3不能正确识别JSON中的Enum枚举值
一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...
- python全栈开发-json和pickle模块(数据的序列化)
一.什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flat ...
- 读取Json,并替换json中的指定字符
string jsonfile = @"E:\history.json";//JSON文件路径 using (System.IO.FileStream file = new Fil ...
- 在JSON中遇到的一些坑
今天在进行压测的时候,由于需要使用到json进行传参,并且需要在JMeter中加入少量的JSON,由于JSON在java中呈现键值对的形式,并且需要使用到“”来修饰,导致只能使用\进行转义,在发送请求 ...
- json中获取key值
<script type="text/javascript"> getJson('age'); function getJson(key){ var jsonObj={ ...
随机推荐
- SSH使用技巧
SSH使用技巧 SSH免输入密码 原理是依赖证书去认证,从而免除密码输入. 通过ssh-keygen生成一对公私钥,是否使用passphrase可以根据个人喜好.(其实使用证书就是为了方便而已,我是不 ...
- javaScript 消除错误,并将错误记录在控制台,阻止浏览器错误警告
当我们使用jquery,和其他各种框架时,有的时候会出现各种错误, 例如jquery文件报错,但又不影响功能, 又不能对jquery做出更改,怎么办呢? window.onerror=functi ...
- hdu 3333 Turing Tree(线段树+离散化)
刚看到是3xian大牛的题就让我菊花一紧,觉着这题肯定各种高端大气上档次,结果果然没让我失望. 刚开始我以为是一个普通的线段树区间求和,然后啪啪啪代码敲完测试没通过,才注意到这个求和是要去掉相同的值的 ...
- 在OpenStack虚拟机实例中创建swap分区的一种方法
测试组里一个同学负责MapR的搭建,MapR文档中建议每个节点上至少有24GB的swap分区,不知道MapR为啥会有这种反人类的建议……swap无非就是一块顺序读写的磁盘空间,莫非省着内存不用,用sw ...
- 应聘linux/ARM嵌入式开发岗位
**************************************************************** 因为发在中华英才和智联招聘没有人采我所以我 在这里发布我的个人简历希望 ...
- java foreach实现原理
在平时Java程序中,应用比较多的就是对Collection集合类的foreach遍历,foreach之所以能工作,是因为这些集合类都实现了Iterable接口,该接口中定义了Iterator迭代器的 ...
- 微信--高效解决token及授权用户openid的持久化处理办法
摘要 关于微信开发的话题,例子确实已经有不少,但大部分都是人云亦云,很多小细节或者需要注意的地方却大多没有讲清楚,这令很多刚开始开发的人感觉大很迷茫.而我今天要说的话题,主要着眼于两个方面. 一:如 ...
- 项目上传svn出问题
我在自己的笔记本上(win8),安装了tortoise 1.9.4和visualSVN server 3.5.3.我现在想让eclipse的自带的svn插件连接到本地服务器的资源库上.但是我写http ...
- 数据库开启gtid时,需要注意的问题
1.slave不能执行任何sql,包括超级用户2.read_only=on,这个必须要开启,避免业务执行sql3.保证当前slave的事务id为1 当slave同步出现问题时,手动跳过,需要考虑的问题 ...
- sequekize
关于sequelize的准备工作这里不再赘述. 一.引入sequelize模块 var Sequelize = require('sequelize'); 二.连接数据库 var sequelize ...