项目开发工程中经常有类似这样的需求,前台向后台请求一个json数据,后台返回json字符串提供前台,js获取之后对前端进行对应的操作。
这里需要主要的是在前台获取到json字符串后需要转换成json对象:
//JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; //JSON对象: var str2 = { "name": "cxh", "sex": "man" }; //一、JSON字符串转换为JSON对象 //要运用上面的str1,必须运用下面的要领先转化为JSON对象: //由JSON字符串转换为JSON对象 var obj = eval('(' + str + ')'); //或者 var obj = str.parseJSON(); //由JSON字符串转换为JSON对象 //或者 var obj = JSON.parse(str); //由JSON字符串转换为JSON对象 //然后,就可以这样读取: Alert(obj.name); Alert(obj.sex);
为了描述此功能,小猪
模拟后台数据:
使用的是ASP.NET MVC
[HttpPost] public JsonResult Books() { Entity.Books result = new Books(){ Title="标题标题", Brief="简介简介", Auther="作者作者"' Price="价格价格", Tag="标签标签" }; return Json(result); }
后台返回给前台之后前台需要相应的操作:
function loadBooksInformation(par) { var book = JSON.parse(par);//转换成json对象 var bookTitle = $("#bookTitle"); var bookSummary = $("#bookSummary"); var bookAuther = $("#bookAuther"); var bookPrice = $("#bookPrice"); var bookTag = $("#bookTag"); bookTitle.val(book.Title); bookSummary.val(book.Brief); bookAuther.val(book.Auther); bookPrice.val(book.Price); bookTag.val(book.Tag); }
这样,一个传输过程就完成了。当然,小猪省略了使用js向后台请求数据的过程。
特别留心:
如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。
PS:如果我需要将json字符串转换成C#对象呢?具体请您参照:http://www.smallerpig.com/archives/292