使用Json.NET 实现 Linq To JSON

/*
 * 由SharpDevelop创建。
 * 用户: Changweihua
 * 日期: 2013/11/4
 * 时间: 16:38
 *
 * changweihua@outlook.com
 * http://www.cmono.net
 *
 */
using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
/**
 * Linq to JSON 基本操作类
 *
 * JObject 用于操作 JSON 对象
 * JArray 用于操作 JSON 数组
 * JValue 表示数组中的值
 * JProperty 表示对象中的属性,以 "key/value" 形式
 * JToken 用于存放 Linq to JSON 查询后的结果
 *
 *
 * JObject.Parse(string json) json 是 json 对象字符串,返回值为 JObject 对象
 * JObject.FromObject(object obj) obj 为要转换的对象,返回一个 JObject 对象
 * JObject.Load(JsonReader reader) reader 包含中 JSON 对象的内容,返回一个 JObject 对象
 *
 **/
namespace JsonNETSample2
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("-------------------- 异步 ---------------------");
            List<Person> list = new List<Person>{
                new Person { Id = 1, Name = "Chang Weihua" },
                new Person { Id = 2, Name = "Tan MZ" }
            };
               
            Task<string> action = JsonConvert.SerializeObjectAsync(list, Formatting.Indented);
               
            Console.WriteLine(action.Result);
            Console.WriteLine("------------------------------------------------");
               
            Console.WriteLine("\n\n");
               
            JObject staff = new JObject();
            staff.Add(new JProperty("Name", "Changweihua"));
            staff.Add(new JProperty("Age", 23));
            staff.Add(new JProperty("Department", "Developing Department"));
            staff.Add(new JProperty("Leader", new JObject(new JProperty("Name", "Tom"), new JProperty("Age", 44), new JProperty("Department", "Developing Department"))));
               
            Console.WriteLine(staff.ToString());
               
            JArray arr = new JArray();
            arr.Add(new JValue(1));
            arr.Add(new JValue(2));
            arr.Add(new JValue(3));
            Console.WriteLine(arr.ToString());
               
            string json = "{\"Name\" : \"Jack\", \"Age\" : 34, \"Colleagues\" : [{\"Name\" : \"Tom\" , \"Age\":44},{\"Name\" : \"Abel\",\"Age\":29}] }";
               
            JObject obj = JObject.Parse(json);
               
            JToken ageToken = obj["Age"];
               
            Console.WriteLine(ageToken.ToString());
               
            var colleagues = from c in obj["Colleagues"].Children() select (string)c["Name"];
               
            foreach (var name in colleagues)
            {
                Console.WriteLine(name);
            }
               
            var names = obj.SelectToken("Colleagues").Select(p => p["Name"]).ToList();
            foreach (var name in names)
                Console.WriteLine(name.ToString());
               
            string arrJson = "[{\"Name\" : \"Jack\", \"Age\" : 34},{\"Name\" : \"Tom\" , \"Age\":44},{\"Name\" : \"Abel\",\"Age\":29}]";
            JArray jArr = JArray.Parse(arrJson);
            Console.WriteLine(jArr.Count);
               
            foreach (var p in jArr)
            {
                Console.WriteLine(p.SelectToken("Name").ToString());
            }
               
            Console.ReadKey(true);
        }
    }
       
    class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}


知识共享许可协议
《使用Json.NET 实现 Linq To JSON》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     153.91ms