Json库引用
借助NuGet 程序包添加json库文件,添加引用 using Newtonsoft.Json;
Dictionary字典类型的相互转换
转换代码:
public static class JsonUntity
{
/// <summary>
/// 将字典类型序列化为json字符串
/// </summary>
/// <typeparam name="TKey">字典key</typeparam>
/// <typeparam name="TValue">字典value</typeparam>
/// <param name="dict">要序列化的字典数据</param>
/// <returns>json字符串</returns>
public static string SerializeDictionaryToJsonString<TKey, TValue>(Dictionary<TKey, TValue> dict)
{
if (dict.Count == 0)
return "";
string jsonStr = JsonConvert.SerializeObject(dict);
return jsonStr;
}
/// <summary>
/// 将json字符串反序列化为字典类型
/// </summary>
/// <typeparam name="TKey">字典key</typeparam>
/// <typeparam name="TValue">字典value</typeparam>
/// <param name="jsonStr">json字符串</param>
/// <returns>字典数据</returns>
public static Dictionary<TKey, TValue> DeserializeStringToDictionary<TKey, TValue>(string jsonStr)
{
if (string.IsNullOrEmpty(jsonStr))
return new Dictionary<TKey, TValue>();
Dictionary<TKey, TValue> jsonDict = JsonConvert.DeserializeObject<Dictionary<TKey, TValue>>(jsonStr);
return jsonDict;
}
}
实体类Json转换
JSON在线解析及格式化验证 - JSON.cn
可以在这个网址更清楚的查看JSON数据,另外还可以在这直接生成实体类,这里就不演示了
实体类:
public class Jsondata//实体类1
{
public string Spec { get; set; }
public string Uplimit { get; set; }
public string Dnlimit { get; set; }
public string Max { get; set; }
public string Min { get; set; }
public List<TestData> TestValue { get; set; }
}
public class TestData//实体类2
{
public string ItemCode { get; set; }
public string Value { get; set; }
}
写入JSON格式数据:
//引用Newtonsoft.Json
//using Newtonsoft.Json;
Jsondata js = new Jsondata();//实体类1
//赋值
js.Spec = "10";
js.Uplimit = "15";
js.Dnlimit = "5";
js.Max = "12";
js.Min = "8";
List<string> dataAry = new List<string>();
for (int i = 0; i < 3; i++)
{
dataAry.Add(new Random().Next(1, 10).ToString());//得到3个随机数
}
js.TestValue = new List<TestData>();//初始化
for (int i = 0; i < dataAry.Count + 1; i++) //测试数据
{
TestData d = new TestData();//实体类2
if (i < dataAry.Count)
{
d.ItemCode = "值" + (i + 1);
d.Value = "22";
js.TestValue.Add(d);
}
}
string strJson = JsonConvert.SerializeObject(js);//序列化转换成JSON格式
textBox2.Text = strJson;
就得到如下的这一堆数据:
{“Spec”:“10”,“Uplimit”:“15”,“Dnlimit”:“5”,“Max”:“12”,“Min”:“8”,“TestValue”:[{“ItemCode”:“值1”,“Value”:“22”},{“ItemCode”:“值2”,“Value”:“22”},{“ItemCode”:“值3”,“Value”:“22”}]}
JSON格式的解析 ,得到数据后下一步就是解析取其中的内容:
//解析
Jsondata rejs = JsonConvert.DeserializeObject<Jsondata>(strJson);//反序列化
string spc= rejs.Spec;//实体类1的值直接点出来就行了
//实体类2的值则需要循环遍历
List<string> list = new List<string>();
foreach (TestData item in rejs.TestValue)
{
list.Add(item.ItemCode);
list.Add(item.Value);
}