项目开发工程中经常有类似这样的需求,前台向后台请求一个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
浙公网安备 33010602011771号