JSON是什么 JSON怎么用?

========================================================================================================

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。。

JSON的结构基于下面两点

1. "名称/值"对的集合不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表 (hash table),键列表(keyed list)等

     2. 值的有序列表 多数语言中被理解为数组(array)
JSON使用:

JSON以一种特定的字符串形式来表示 JavaScript 对象。如果将具有这样一种形式的字符串赋给任意一个 JavaScript 变量,那么该变量会变成一个对象引用,而这个对象就是字符串所构建出来的,好像有点拗口,我们还是用实例来说明。

 这里假设我们需要创建一个 User对象,并具有以下属性

用户ID

     用户名
    用户 Email
    您可以使用以下JSON形式来表示User对象:

{"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};

     然后如果把这一字符串赋予一个JavaScript 变量,那么就可以直接使用对象的任一属性了。

完整代码:

<script>

     var User = {"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};
     alert(User.Name);
    </script>
实际使用时可能更复杂一点,比如我们为Name定义更详细的结构,使它具有FirstName和LastName:

{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"qq◎hotmail.com"}

完整代码:

<script>

var User = {"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"};
alert(User.Name.FirstName);
</script>
现在我们增加一个新的需求,我们某个页面需要一个用户列表,而不仅仅是一个单一的用户信息,那么这里就需要创建一个用户列表数组。
下面代码演示了使 用JSON形式定义这个用户列表:
[
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.com"}
]

完整代码:

<script>

var UserList = [
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.com"}
];
alert(UserList[0].Name.FirstName);
</script>
事实上除了使用"."引用属性外,我们还可以使用下面语句:

alert(UserList[0]["Name"]["FirstName"]); 或者 alert(UserList[0].Name["FirstName"]);

现在读者应该对JSON的使用有点认识 了,归纳为以下几点:

对象是属性、值对的集合。一个对象的开始于“{”,结束于“}”。每一个属性名和值间用“:”提示,属性间用“,”分隔。

数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
字符串和数字的定义和C或Java基本一致。

下面用2个很好的实例做解释

===============================json 是什么 json怎么用 json实例 json源码===================

例1 sitebao里面的 ajax 获得时间格式,在前台动态的添加到下拉框的选项里

不需要自己定义json的数组格式

public String getTimeStyle(){

TimeStyleDAO timeStyleDAO = TimeStyleDAO.getInstance();

timeStyles = timeStyleDAO.getAllStringStyle();

System.out.println(timeStyles.size());

JSONArray obj=JSONArray.fromObject(timeStyles);

getResponse().setContentType("text;charset=UTF-8");

try {

getResponse().getWriter().write(obj.toString());

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return NONE;

}

=======页面,获得后台传过来的json对象,遍历json数组,动态添加====

$.ajax({

url:"/sitebao62p/page_getTimeStyle.do?ajax=true",

cache:false,

data:data,

dataType:"text",

type:"POST",

success:function(data){

closeDIV("addModel");

openDIV("addProductModel");

data=eval_r(""+data+"");

$.each(data,function(index,item){

temp="<option value='"+item.id+"'>"+item.stringStyle+"</option>";

$("#producttimeStyleId").append(temp);

});

}

});

例2=================需要自己组装json数组格式。====================

try{

StringBuffer sb=new StringBuffer("[");

int length=OneNesType.size();

for (int i = 0; i <length; i++) {

Column model=(Column)OneNesType.get(i);

sb.append("{");

sb.append("'id':");

sb.append(""+model.getId()+",");

sb.append("'name':");

sb.append("'"+model.getName()+"'");

sb.append("},");

}

if(sb.lastIndexOf(",")>0){

sb=new StringBuffer(sb.substring(0,sb.lastIndexOf(",")));

}

sb.append("]");

System.out.println(sb.toString());

getResponse().setContentType("text;charset=UTF-8");

getResponse().getWriter().write(sb.toString());

return null;

}catch(Exception e){

e.printStackTrace();

}

return NONE;

}

======================json 是什么 json怎么用 json实例 json源码===================

例1 sitebao里面的 ajax 获得时间格式,在前台动态的添加到下拉框的选项里

不需要自己定义json的数组格式============

public String getTimeStyle(){

TimeStyleDAO timeStyleDAO = TimeStyleDAO.getInstance();

timeStyles = timeStyleDAO.getAllStringStyle();

System.out.println(timeStyles.size());

JSONArray obj=JSONArray.fromObject(timeStyles);

getResponse().setContentType("text;charset=UTF-8");

try {

getResponse().getWriter().write(obj.toString());

} catch (IOException e) {

e.printStackTrace();

}

return NONE;

}

=======页面,获得后台传过来的json对象,便利json数组,动态添加====

$.ajax({

url:"/sitebao62p/page_getTimeStyle.do?ajax=true",

cache:false,

data:data,

dataType:"text",

type:"POST",

success:function(data){

closeDIV("addModel");

openDIV("addProductModel");

data=eval_r(""+data+"");

$.each(data,function(index,item){

temp="<option value='"+item.id+"'>"+item.stringStyle+"</option>";

$("#producttimeStyleId").append(temp);

});

}

});

例2==================需要自己组装json数组格式。==========================

try{

StringBuffer sb=new StringBuffer("[");

int length=OneNesType.size();

for (int i = 0; i <length; i++) {

Column model=(Column)OneNesType.get(i);

sb.append("{");

sb.append("'id':");

sb.append(""+model.getId()+",");

sb.append("'name':");

sb.append("'"+model.getName()+"'");

sb.append("},");

}

if(sb.lastIndexOf(",")>0){

sb=new StringBuffer(sb.substring(0,sb.lastIndexOf(",")));

}

sb.append("]");

System.out.println(sb.toString());

getResponse().setContentType("text;charset=UTF-8");

getResponse().getWriter().write(sb.toString());

return null;

}catch(Exception e){

e.printStackTrace();

}

return NONE;

}

===============json 是什么 json怎么用 json实例 json源码============

对于单独的一个json串

public void getCategoryAjax(int catId,HttpServletResponse response){

Category c = new Category();

c = myCategoryService.getCategory(catId);

int uid = 1;

//如果我什么都不需要返回,则下面怎么写?比如删除的时候

//获得我的目录

List<Category> list = myCategoryService.myCategoryList(uid);

StringBuffer sb=new StringBuffer();

sb.append("{'catId':"+c.getCatId()+",'name':'"+c.getName()+"','description':'"+c.getDescription()+"'}");

//sb.append("]");

writerResponseRes(response, sb.toString());

}

js中的体现

function update_category(catId){

var catId = catId;

var name = "";

var description = "";

$.ajax({

url:"/iknowing/getCategoryAjax.html",

type:"POST",

dataType:"text",

data:'catId='+catId,

success:function(data){

data=eval_r("("+data+")");

name = data.name;

description = data.description;

$("#updateName").attr("value",name);

if(description!='undefined'){

$("#updateDescription").attr("value",description);

}

$("#updateCatId").attr("value",catId);

}

});

$('#updateDiv').dialog('open');

}

小结:

本文通过一个实例演示,初步了解了 JSON 的强大用途。可以归结如下:

JSON 提供了一种优秀的面向对象的方法,以便将元数据缓存到客户机上。

JSON 帮助分离了验证数据和逻辑。
JSON 帮助为 Web 应用程序提供了 Ajax 的本质。

=======================================================

JSON是什么 JSON怎么用?

http://blog.sina.com.cn/s/blog_64aedc270100lbjc.html

JSON是什么 JSON怎么用相关推荐

  1. Json对象和Json字符串

    JSON对象 有时候在做项目的时候时常将这两个概念弄混淆,尤其是在使用springmvc的时候,后台@RequestBody接受的是一个json格式的字符串,一定是一个字符串.  先介绍一下json对 ...

  2. Go 学习笔记(20)— Go 操作 json 文件(编码生成 json、解码 json 为 map、解码 json 为 struct)

    1. Json 概述 Go 语言对于标准格式的编码和解码都有良好的支持,由标准库中的 encoding/json . encoding/xml . encoding/asn1 等包提供支持并且这类包都 ...

  3. json对象和json字符串转换方法

    在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. 先明 ...

  4. python中json dumps_python中json.loads,dumps,jsonify使用

    search_info = {'id':132,'user_role':3} print type(search_info) #输出 #转为string用dumps print type(json.d ...

  5. json.dumps()、json.dump()、json.loads()和json.dumps()的区别

    json.dumps().json.dump().json.loads()和json.dumps()的区别 json.dumps()用于将字典形式的数据转化为字符串 json.loads()用于将字符 ...

  6. json数组 js html标签,js定义json对象数组 json 数组也是数组 //

    var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]"; var jsonarray = eval('('+js ...

  7. php json.parse,PHP JSON头导致JSON.parse出错(使用jQuery)

    我正在从PHP文件中获取一些JavaScript格式的JSON数据. 要使用这些数据,我使用JSON.parse(json_response),除了在PHP中使用JSON头之外,它都可以工作:head ...

  8. 将Model对象转换成json文本或者json二进制文件

    将Model对象转换成json文本或者json二进制文件 https://github.com/casatwy/AnyJson 注意:经过测试,不能够直接处理字典或者数组 主要源码的注释 AJTran ...

  9. Json串到json对象的转换

    为什么80%的码农都做不了架构师?>>>    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生 ...

  10. 【前端】JSON.stringfy 和 JSON.parse(待续)

    JSON.stringfy 和 JSON.parse(待续) 支持全局对象JSON的浏览器有:IE8+, FireFox3.5+, Safari4+, Chrome, Opera10.5+ JSON. ...

最新文章

  1. template模板的使用方法
  2. 从入门到精通系列Java高级工程师路线介绍,附答案
  3. 又一个高等级数据中心着火了!
  4. Sci-Hub和 Alexandra 的基本信息
  5. 2条电信宽带 并线_理想更新“货车并线预警”遭用户吐槽 李想:目前功能偏保守 仍在优化...
  6. 厉害了!中关村软件园人工智能军团有料有看点
  7. Windows平台RTMP|RTSP播放器为什么要兼容GDI绘制
  8. cwntos linux kde桌面,Centos如何安装KDE的桌面
  9. 挖出一个面试刷题的宝藏资源,赶紧收下了~
  10. LADRC的学习——总概
  11. HBase的JavaAPI使用
  12. matlab科研绘图模板,直接奉上源代码!
  13. Web—信息收集(非常全)
  14. Enovia Overview
  15. Python画多条线在一个图里
  16. 接受密码和用户名,若用户名为‘admin‘,密码为‘‘123456‘则显示用户登录成功,否则一直登录
  17. 2022081班李亚楠20220920
  18. 详细解析集成运算放大电路比例运算的工作原理
  19. 【深度学习】YOLOv7速度精度超越其他变体,大神AB发推,网友:还得是你!|开源...
  20. styled-components 基本用法

热门文章

  1. 每日简报 5月11日简报新鲜事 每天一分钟 了解新鲜事
  2. Linux进程间通信详解
  3. 访问学者申请美国签证的资金证明怎么开?
  4. TongWeb及应用系统安全加固
  5. 【Python】Python脚本命令行解析
  6. 【爬虫实战】10应用Python网络爬虫——定向爬取百度百科文字
  7. 让enter键功能和Tab键一样
  8. 基于J2EE架构的项目开发团队中的角色与职责
  9. jquery如何获取某个元素内的子元素的值
  10. 如何直接用Tomcat启动项目