以前写过一个很水的,留下了两个参考网站。其实我也只是为了自己以后查资料方便才那样做的,这次不水,直接贴代码,我看到了一堆注释,头晕。。。
注意:别忘了使用nuget程序包管理器安装newtonsoft.json插件。
代码如下:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
namespace Study
{
public partial class JSONTest : Form
{
public JSONTest()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//引用Newtonsoft.Json库
//解析JSON数据
//普通JSON数据
//string str = "{'city':'北','cityid':'101010100'}";
//JObject jo = (JObject)JsonConvert.DeserializeObject(str);
//string zone = jo["cityid"].ToString();
//MessageBox.Show((zone));
//嵌套JSON数据
//string str = "{'weatherinfo':{'city':'北','cityid':'101010100'}}";
//JObject jo = (JObject)JsonConvert.DeserializeObject(str);
//string zone = jo["weatherinfo"]["city"].ToString();
//MessageBox.Show((zone));
//数组型数据
//string jsonArrayText1 = "[{'Name':'Tom','Age':'16'},{'Name':'Mary','Age':'15'}]";
//JArray ja = (JArray)JsonConvert.DeserializeObject(jsonArrayText1);
//string name1 = ja[1]["Name"].ToString();
//richTextBox1.Text = name1;
//生成JSON数据
//输出{"Name":"Jack","Age":"26"}
//StringWriter sw = new StringWriter();
//JsonWriter writer = new JsonTextWriter(sw);
//writer.WriteStartObject();
//writer.WritePropertyName("Name");
//writer.WriteValue("Jack");
//writer.WritePropertyName("Age");
//writer.WriteValue("26");
//writer.WriteEndObject();
//writer.Flush();
//string jsonText = sw.GetStringBuilder().ToString();
//richTextBox1.Text = jsonText;
//Student类进行序列化(生成JSON数据)和反序列化(解析)。
//1.生成普通JSON数据
//Student stu = new Student() { Name = "Jack", Age = 20 };
//JsonSerializer serializer = new JsonSerializer();
//StringWriter sw = new StringWriter();
//serializer.Serialize(new JsonTextWriter(sw), stu);
//richTextBox1.Text += sw.GetStringBuilder().ToString();
//StringReader sr = new StringReader(sw.GetStringBuilder().ToString());
//Student s = (Student)serializer.Deserialize(new JsonTextReader(sr), typeof(Student));
//richTextBox1.Text += "\n" + s.Name + "=>" + s.Age;
//2.序列化成数组型JSON
//List<Student> students = new List<Student>();
//Student stu = new Student() { Name = "Jack", Age = 20 };
//Student stu1 = new Student() { Name = "Tom", Age = 21 };
//students.Add(stu);
//students.Add(stu1);
//JsonSerializer serializer = new JsonSerializer();
//StringWriter sw = new StringWriter();
//serializer.Serialize(new JsonTextWriter(sw), students);
//richTextBox1.Text = sw.GetStringBuilder().ToString();
//序列化成嵌套型JSON
List<Students> students = new List<Students>();
Students stu = new Students() { Name = "Jack", Age = 20, Phones = new List<string> { "1455655888", "15236988985" } };
Students stu1 = new Students() { Name = "Tom", Age = 21, Phones = new List<string> { "1325889684", "15236988985" } };
students.Add(stu);
students.Add(stu1);
JsonSerializer serializer = new JsonSerializer();
StringWriter sw = new StringWriter();
serializer.Serialize(new JsonTextWriter(sw), students);
richTextBox1.Text = sw.GetStringBuilder().ToString();
}
//public class Student
//{
// public string Name { get; set; }
// public int Age { get; set; }
//}
public class Students
{
public string Name { get; set; }
public int Age { get; set; }
public List<string> Phones { get; set; }
}
}
}