using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Web.Mvc;
namespace WebApplication1.Controllers
{
public class JsonTestController : Controller
{
public ActionResult Index()
{
//using Newtonsoft.Json;
try
{
#region 单条数据
string jsonString = "{\"ID\":1,\"ClassName\":\"name1\",\"Students\":[{\"ID\":1,\"StudentName\":\"StudentName1\",\"ClassID\":0},{\"ID\":2,\"StudentName\":\"StudentName2\",\"ClassID\":0}]}";
Classes model = (Classes)JsonConvert.DeserializeObject(jsonString, typeof(Classes));
Classes objModel = JsonConvert.DeserializeObject<Classes>(jsonString);
List<Student> studentList = model.Students;
#endregion
#region 列表数据
string jsonList = "[{\"ID\":1,\"ClassName\":\"name1\"},{\"ID\":2,\"ClassName\":\"name2\"},{\"ID\":3,\"ClassName\":\"name3\"},{\"ID\":4,\"ClassName\":\"name4\"},{\"ID\":5,\"ClassName\":\"name5\"}]";
List<Classes> list = (List<Classes>)JsonConvert.DeserializeObject(jsonList, typeof(List<Classes>));
List<Classes> objList = JsonConvert.DeserializeObject<List<Classes>>(jsonList);
#endregion
#region 序列化
string jsonData = JsonConvert.SerializeObject(objList);
#endregion
}
catch (Exception)
{
throw;
}
return View();
}
}
public class Classes
{
public int ID { get; set; }
[JsonProperty(PropertyName = "class_name")]
public string ClassName { get; set; }
public List<Student> Students { get; set; }
}
public class Student
{
public int ID { get; set; }
[JsonProperty(PropertyName = "student_name")]
public string StudentName { get; set; }
public int ClassID { get; set; }
}
}
List<DictionaryObj>对象转换Json字符串
public void ObjectToJson()
{
List<DictionaryObj> list = new List<DictionaryObj>();
for (int i = 0; i < 10; i++)
{
DictionaryObj model = new DictionaryObj();
model.id = i;
model.name = "name" + i.ToString();
list.Add(model);
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(list);
}
public class DictionaryObj
{
public int id { get; set; }
public string name { get; set; }
}
输出结果
[
{"id":0,"name":"name0"},{"id":1,"name":"name1"},{"id":2,"name":"name2"},
{"id":3,"name":"name3"},{"id":4,"name":"name4"},{"id":5,"name":"name5"},
{"id":6,"name":"name6"},{"id":7,"name":"name7"},{"id":8,"name":"name8"},
{"id":9,"name":"name9"}
]
jQuery输出
<input id="hidJsonPic" type="hidden" value="@ViewData["jsonpic"]" />
<script>
var arrayData = [];
$(document).ready(function () {
var json = $("#hidJsonPic").val();
$(jQuery.parseJSON(json)).each(function (index, item) {
arrayData.push({ "objKey": item.Title, "objText": item.ImgUrl });
});
alert(JSON.stringify(arrayData));
});
</script>
Bad JSON escape sequence
出现了特殊字符,导致Newtonsoft.Json.dll无法解析;
利用正则表达式先把待解析的字符串中的带“\”特殊字符处理,再进行解析操作;
string validity = "[{"name":"身份证号","validity":"(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)","message":"身份证号不正确"}]";
string pattern = @"(\\[^bfrnt\\/'\""])";
validity = Regex.Replace(validity, pattern, "\\$1");
List<ValidityDto> validityList = JsonConvert.DeserializeObject<List<ValidityDto>>(validity);
*