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 = "";
}
}