一、JSON是什么?

  JSON(JavaScript Object Notation)、轻量级数据交换格式。

  JSON的后缀名:.json  JSON的MINE类型:application/json

二、JSON的格式

  以下为实际JSON举例(包含基本类型与数组类型等),理论不再赘述。

{
"name":"张三",
"id":1001,
"address":
[
{"pro":"anhui","city":"fuyang"},
{"pro":"jiangsu","city":"nanjing"}
],
"bool":true
}

  关于jsonPath,参考:https://www.cnblogs.com/weilunhui/p/3857366.html

三、如何遍历JSON

  简单JSON对象的遍历: 

            1.obj.attr

      2.obj["attr"]

      3.使用 attr in json 进行遍历:

// 遍历简单json对象
function traverseJsonSimpleObj(){
var jsonObj = {"name": "kevin", "age": 27, "sex": "男", "city": "shenzhen"};
for(var key in jsonObj){
var html = "<p>"
html += (key + ' : ' + jsonObj[key]);
html += "</p>";
$("#out").append(html);
}
}

  遍历json数组

function traverseJsonArray(){
var jsonArray = [{"name": "kevin", "age": 27, "sex": "男", "city": "shenzhen"},
{"name": "kevin2", "age": 28, "sex": "男", "city": "beijing"}];
//alert('JSON.stringify(jsonArray) = ' + JSON.stringify(jsonArray));
for(var i=0; i<jsonArray.length; i++){
var jsonObj = jsonArray[i];
for(var key in jsonObj){
var html = "<p>"
html += (key + ' : ' + jsonObj[key]);
html += "</p>";
$("#out").append(html);
}
$("#out").append("-----------------------------------------------------");
}
}

    当然,可以简写为:

 var json = [{dd:'SB',AA:'东东',re1:123},{cccc:'dd',lk:'1qw'}];
for(var i=0,l=json.length;i<l;i++){
for(var key in json[i]){
alert(key+':'+json[i][key]);
}
}

    后台直接通过springMVC等框架结合jackson,将JSON字符串放入javaBean中(属性与名称对应)(见springMVC章节)

  【更新】:实际springMVC后台@ResponseBody时返回JSON时前台的解析方法:

    后台返回数据形式:

  示例1:

@RequestMapping(value = "findAll",method = RequestMethod.GET)
@ResponseBody
public List<SimpleMenuList> findAll(HttpServletResponse response){
List<SimpleMenuList> mlList = menuListService.findAll();
/*ObjectMapper mapper = new ObjectMapper();
String jsonfromList = mapper.writeValueAsString(mlList);
System.out.println(jsonfromList);*/
//Map<String,Object> map = new HashMap<String,Object>();
// map.put("list", mlList);
// 许跨域访问
response.setHeader("Access-Control-Allow-Origin", "*");
return mlList;
}

  示例2:

  实体类:(单个属性,只为举例)

public class AssociateWord {

    private String assoWord;

    public String getAssoWord() {
return assoWord;
} public void setAssoWord(String assoWord) {
this.assoWord = assoWord;
} }

  返回List:

 for (int i =0; i<5; i++) {
AssociateWord aw = new AssociateWord();
String s = "关键字"+i;
System.out.println(s);
aw.setAssoWord(s);
list.add(aw);
}
return list;

  其他示例可参见SSM—CRUD随笔等(如返回map)

 //获得全部菜单列表
function getMenuList(){
$.ajax({
type : "get",
url : "http://localhost:8080/jeesite/f/menu_list/menuList/findAll",
success : function(result) {
console.log(result);
var jsonArray = eval(result);
alert("后台返回的菜单列表:"+jsonArray);
alert("数组长度:"+jsonArray.length);
//此处遍历点单列表
for(var i=0; i<jsonArray.length; i++){
var jsonObj = jsonArray[i];
for(var key in jsonObj){
alert(key + ' : ' + jsonObj[key]);
}
}
}
});
}

    【更新】:jQuery each遍历JSON数组:

{
"code": 100,
"msg": "操作成功",
"map": {
"pageInfo": {
"pageNum": 1,
"pageSize": 5,
"size": 5,
"startRow": 1,
"endRow": 5,
"total": 502,
"pages": 101,
"list": [
{
"empId": 1,
"empName": "Alan",
"gender": "M",
"email": "1001@qq.com",
"dId": 1,
"department": {
"deptId": 1,
"deptName": "宣传部"
}
},
{
"empId": 2,
"empName": "Bob",
"gender": "F",
"email": "1002@qq.com",
"dId": 2,
"department": {
"deptId": 2,
"deptName": "测试部"
}
},
{
"empId": 3,
"empName": "ed0b9",
"gender": "M",
"email": "ed0b9@qq.com",
"dId": 1,
"department": {
"deptId": 1,
"deptName": "宣传部"
}
},
{
"empId": 4,
"empName": "167b5",
"gender": "F",
"email": "167b5@qq.com",
"dId": 1,
"department": {
"deptId": 1,
"deptName": "宣传部"
}
},
{
"empId": 5,
"empName": "2fd6c",
"gender": "M",
"email": "2fd6c@qq.com",
"dId": 1,
"department": {
"deptId": 1,
"deptName": "宣传部"
}
}
],
"prePage": 0,
"nextPage": 2,
"isFirstPage": true,
"isLastPage": false,
"hasPreviousPage": false,
"hasNextPage": true,
"navigatePages": 5,
"navigatepageNums": [
1,
2,
3,
4,
5
],
"navigateFirstPage": 1,
"navigateLastPage": 5,
"lastPage": 5,
"firstPage": 1
}
}
}

    对上述JSON遍历如下:(result即为JSON)

//解析员工数据
function build_emps_table(result){
//员工数据
var emps = result.map.pageInfo.list;
//使用jQuery遍历数组,遍历的是取出来的json数组,可以通过开发工具查看JSON结构
$.each(emps,function(idx,item){
//使用jQuery生成各列
var empIdTd = $("<td></td>").append(item.empId);
var empNameTd = $("<td></td>").append(item.empName);
//三目运算符处理性别
var genderTd = $("<td></td>").append(item.gender=="M"?"男":"女");
var emailTd = $("<td></td>").append(item.email);
var deptName = $("<td></td>").append(item.department.deptName); });
}

JavaWeb基础——JSON的更多相关文章

  1. 关于java基础、多线程、JavaWeb基础、数据库、SSM、Springboot技术汇总

    作者 : Stanley 罗昊 本人自行总结,纯手打,有疑问请在评论区留言 [转载请注明出处和署名,谢谢!] 一.java基础 1.多态有哪些体现形式? 重写.重载 2. Overriding的是什么 ...

  2. JavaWeb基础: ServletContext

    基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...

  3. JavaWeb基础: 学习大纲

    JavaWeb基础: Web应用和Web服务器 JavaWeb基础: Tomcat JavaWeb基础:HTTP协议和基于Restful的架构 JavaWeb基础: Web工程配置文件 JavaWeb ...

  4. 项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!

    前言 系列文章:[传送门] 洗了个澡,准备写篇博客.然后看书了.时间 3 7 分.我慢慢规律生活,向目标靠近.  很喜欢珍惜时间像叮当猫一样 正文 慢慢地,二维码实现签到将要落幕了.下篇文章出二维码实 ...

  5. JavaWeb基础知识总结

    JavaWeb基础知识总结.   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...

  6. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  7. 【JavaWeb】JSON基础

    JSON JavaScript Object Notation(JavaScript 对象表示法): JSON是轻量级的文本数据交换格式: JSON独立于语言,具有自我描述性,更易理解: JSON语法 ...

  8. [Java面试三]JavaWeb基础知识总结.

    1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...

  9. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

随机推荐

  1. Nginx 配置多站点vhost

    假设你想在Linux Nginx中用不同的域名访问不同的目录,这时就要配置多个vhost,具体配置如下,假设网站根目录设定在/var/www/ 1.在/var/www/下新建两个目录 /var/www ...

  2. 利用jTessBoxEditor工具进行Tesseract3.02.02样本训练,提高验证码识别率

    1.背景 前文已经简要介绍tesseract ocr引擎的安装及基本使用,其中提到使用-l eng参数来限定语言库,可以提高识别准确率及识别效率. 本文将针对某个网站的验证码进行样本训练,形成自己的语 ...

  3. Django学习---抽屉热搜榜分析【all】

    Python实例---抽屉热搜榜前端代码分析 Python实例---抽屉后台框架分析 Python学习---抽屉框架分析[点赞功能分析] Python学习---抽屉框架分析[数据库设计分析]18031 ...

  4. IntelliJ IDEA2017/2018 激活方法 破解补丁激活(亲测可用)(注册码方法以和谐)

    IntelliJ IDEA2017 激活方法(注册码方法以和谐): 搭建自己的授权服务器,对大佬来说也很简单,我作为菜鸟就不说了,网上有教程. 我主要说第二种,现在,直接写入注册码,是不能成功激活的( ...

  5. [EffectiveC++]item28:避免返回handles指向对象内部成分

    可以先参考一个帖子:http://bbs.csdn.net/topics/390731394?page=1

  6. VRSProcess(二)

    1._beginthreadex再谈 Windows操作系统提供了这样的一种解决方案——每个线程都将拥有自己专用的一块内存区域来供标准C运行库中所有有需要的函数使用.而且这块内存区域的创建就是由C/C ...

  7. Fix for: Permission denied to access property 'toString'

    Originally posted by rwolffgang here. Hi guys,when developing a game that runs in an iframe (Faceboo ...

  8. swift内存管理:值类型与引用类型

    Use struct to create a structure. Structures support many of the same behaviors as classes, includin ...

  9. jQuery事件处理

    浏览器的事件模型 DOM第0级事件模型 Event实例 他的属性提供了关于当前正被处理的已触发事件的大量信息.这包括一些细节,比如在哪个元素上触发的事件.鼠标事件的坐标以及键盘事件中单击了哪个键. 事 ...

  10. JavaScript中烧脑的&&和||

    在js中经常能看到以下的写法: var obj1 = a || b || c; var obj2 = a && b && c; 刚看到时,很容易认为返回的两个变量都是 ...