C# 利用Newtonsoft.Json对Json数据与实体之间进行相互转换
首先!!!
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
实体转JSON字符串:
Student student = new Student(1001,"李小剑","男",23);
string strJson = JsonConvert.SerializeObject(student);
JSON字符串转实体
Student student = new Student(1001,"李小剑","男",23);
string strJson = "{"Id":1002,"Name":"杰克马","Sex":"男","Age":53}";
student = JsonConvert.DeserializeObject<Student>(strJson);
MessageBox.Show($"学号:{student.Id},姓名:{student.Name},性别:{student.Sex},年龄:{student.Age}");
//student.Id = 1002
//student.Name = "杰克马"
//student.Sex = "男"
//student.Age = 53
JSON字符串根据Key取Value
string JsonStr = "{"Id":1002,"Name":"杰克马","Sex":"男","Age":53}";
string KeyStr = "Name";
string ValueStr = "";
JObject jo = (JObject)JsonConvert.DeserializeObject(JsonStr);
ValueStr = jo[KeyStr].ToString();
//ValueStr = jo["Name"].ToString();
MessageBox.Show($"{KeyStr}:{ValueStr}");
//Name:杰克马
如下是我简单做的demo,JSON字符串与实体间的相互转化
运行效果
demo视图:
学生实体类
public class Student
{
public Student(int id, string name, string sex, int age)
{
this.Id = id;
this.Name = name;
this.Sex = sex;
this.Age = age;
}
public int Id { get; set; }
public string Name { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
}
Form代码如下:
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Windows.Forms;
namespace test
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
Student student = new Student(1001,"李小剑","男",23);
private void btnToJson_Click(object sender, EventArgs e)
{
string strJson = JsonConvert.SerializeObject(student);
tbxStrJson.Text = strJson;
}
private void Form2_Load(object sender, EventArgs e)
{
propertyGrid1.SelectedObject = student;
}
private void btnToModel_Click(object sender, EventArgs e)
{
string json = tbxStrJson.Text;
student = JsonConvert.DeserializeObject<Student>(json);
propertyGrid1.SelectedObject = student;
}
private void btnKeyToValue_Click(object sender, EventArgs e)
{
string JsonStr = tbxStrJson.Text;
string KeyStr = tbx_key.Text;
string ValueStr = "";
try
{
JObject jo = (JObject)JsonConvert.DeserializeObject(JsonStr);
ValueStr = jo[KeyStr].ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
tbx_value.Text = ValueStr;
}
}
}