C#處理JSON

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;

namespace JSon
{
    class Program
    {
        static void Main(string[] args)
        {
            //內置方法
            var p = new { Input = "stone", Output = "gold" };
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            var json = serializer.Serialize(p);
            Console.WriteLine(json);

            var p1 = serializer.Deserialize<Project>(json);
            Console.WriteLine(p1.Input + "=>" + p1.Output);
            Console.WriteLine(ReferenceEquals(p, p1));

            Console.WriteLine("========================Newton--Json==============");
            string jsonText = @"{""input"" : ""value123"", ""output"" : ""result456""}";
            JsonReader reader = new JsonTextReader(new StringReader(jsonText));
            while (reader.Read())
            {
                Console.WriteLine(reader.TokenType + "\t\t" + reader.ValueType + "\t\t" + reader.Value);
            }

            Console.WriteLine("------------方法2---------------------");
            JObject jo2 = (JObject)JsonConvert.DeserializeObject(jsonText);
            Console.WriteLine("input:{0} , output:{1}", jo2["input"].ToString(), jo2["output"].ToString());

            Console.WriteLine("------------嵌套格式--方法2---------------------");
            jsonText = "{\"beijing\":{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}}";
            JObject joo = (JObject)JsonConvert.DeserializeObject(jsonText);
            Console.WriteLine("beijing-zone:{0} , beijing-zone_en:{1}", joo["beijing"]["zone"].ToString(), joo["beijing"]["zone_en"].ToString());
           
            //--對像數組
            Console.WriteLine("------------對像數組--------------------");
            string jsonArrayText1 = "[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]";
            JArray ja = (JArray)JsonConvert.DeserializeObject(jsonArrayText1);
            string ja1a = ja[0]["a"].ToString();
            Console.WriteLine(ja1a);

            //或者
            JObject o = (JObject)ja[1];
            string oa = o["a"].ToString();
            Console.WriteLine(oa);

            for (int i = 0; i < ja.Count; i++)
            {
                Console.WriteLine("A:{0},     B:{1}", ja[i]["a"].ToString(),ja[i]["b"].ToString());
            }
           
            for (int i = 0; i < ja.Count; i++)
            {
                Console.WriteLine("A:{0},    B:{1}", ja[i]["a"].ToString(), ja[i]["b"].ToString());
            }
           
            //方法2得到
            Console.WriteLine("------------------------Key------------------------------");
            JArray jaa = JArray.Parse(jsonArrayText1);
            if (jaa != null)
            {
                foreach (JObject jo in jaa)
                {
                    Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(jo.ToString());
                    foreach (string key in values.Keys)
                    {
                        Console.WriteLine(jaa.Count + " key:" + key + " : " + values[key]);
                    }
                }
            }
            Console.ReadLine();
        }
    }

    public class Project {
        public string Input = "";
        public string Output = "";
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章