当前位置: 首页 > news >正文

JSON使用的一些总结

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,可 以用来在客户端和服务器端传输数据!JSON对象既可用于AJAX的开发中,也可用一般的J2EE的开发中,用于一次性向后台提交多于一条的记录!(譬如 显示在页面上的table中记录)
JSON官方网站的介绍:(
www.json.org)

JSON(JavaScriptObjectNotation)isalightweightdata-interchangeformat.Itiseasyforhumanstoreadandwrite.Itiseasyformachinestoparseandgenerate.ItisbasedonasubsetoftheJavaScriptProgrammingLanguage,StandardECMA-2623rdEdition-December1999.JSONisatextformatthatiscompletelylanguageindependentbutusesconventionsthatarefamiliartoprogrammersoftheC-familyoflanguages,includingC,C++,C#,Java,JavaScript,Perl,Python,andmanyothers.ThesepropertiesmakeJSONanidealdata-interchangelanguage.

JSONisbuiltontwostructures:


*Acollectionofname/valuepairs.Invariouslanguages,thisisrealizedasanobject,record,struct,dictionary,hashtable,keyedlist,orassociativearray.

*Anorderedlistofvalues.Inmostlanguages,thisisrealizedasanarray,vector,list,orsequence.



Theseareuniversaldatastructures.Virtuallyallmodernprogramminglanguagessupporttheminoneformoranother.Itmakessensethatadataformatthatisinterchangablewithprogramminglanguagesalsobebasedonthesestructures.

简单的示例:
1。varjsonObj={person1:{name:"jack",age:"12"},
person2:{name:"kate",age:"23"},
person3:{name:"jim",age:"14"}
};
调用JSON对象的属性,
1)jsonObj.person1.name
2)jsonObj["person1"].name
可以通过for循环的方式调用JSON对象中的每一个子对象
for(varpinjsonStr){
//alert(typeofp);alert(p);//返回的是string
str+=jsonObj[p].name+","+jsonObj[p].age+"<br>";
}

2。varjsonObj2={persons:[{name:"jordan",sex:"m",age:"40"},
{name:"bryant",sex:"m",age:"28"},
{name:"McGrady",sex:"m",age:"27"}
]};

调用JSON对象的属性,
1)jsonObj2.persons[0].name;
2)for循环调用方法,
varpersons=jsonObj2.persons;//返回的值是一个数组object
for(vari=0;i<persons.length;i++){
cur_person=persons[i];
str+=cur_person.name+"'sexis"+cur_person.sex+"andageis"+cur_person.age+"<br>";
}
向jsonObj2的persons数组中插入,删除,更新数据,
此处,可以利用javascript的Array对象的方法进行操作,如
varperson={name:"yaoMing",sex:"m",age:"26"};
jsonObj2.persons.push(person);//数组最后加一条记录
jsonObj2.persons.pop();//删除最后一项
jsonObj2.persons.shift();//删除第一项
jsonObj2.persons.unshift(person);//数组最前面加一条记录
只要适合Javascript的方法都是可以用在JSON对象的数组中的!所以还有另外的方法splice()进行crud操作!
//删除
jsonObj2.persons.splice(0,1);//开始位置,删除个数
//替换不删除
varself={name:"tom",sex:"m",age:"24"};
varbrother={name:"Mike",sex:"m",age:"29"};
jsonObj2.persons.splice(1,0,self,brother);//开始位置,删除个数,插入对象
//替换并删除
varself={name:"tom",sex:"m",age:"24"};
varbrother={name:"Mike",sex:"m",age:"29"};
jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数,插入对象

二,知道了在Javascript中JSON的基本操作,但这还不能与后台进行交互,在着之前还需要把它转化为String!

方法有两个,1)引入一个方法:

functionobj2str(o){
varr=[];
if(typeofo=="string")return"\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";
if(typeofo=="object"){
if(!o.sort){
r[0]="{"
for(variino){
r[r.length]=i;
r[r.length]=":";
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
if(!!document.all&&!/^\n?function\s*toString\(\)\s*\{\n?\s*\[nativecode\]\n?\s*\}\n?\s*$/.test(o.toString)){
r[r.length]="toString:"+o.toString.toString();
r[r.length]=",";
}
r[r.length-1]="}"
}else{
r[0]="["
for(vari=0;i<o.length;i++){
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
r[r.length-1]="]"
}
returnr.join("");
}
returno.toString();
}

网上找的,还蛮好用地!!在此对原创者表示感谢啦!!

2)JSON官方网站提供的一个开源的JSON解析器和字符串转换器,json.js

到此为止的话,就可以顺利的将客户端这边的记录传到后台!!

下面还有一个服务器端如何处理的过程,下会接着进行总结!!

相关应用已在maptree.com.cn中得到实践

相关文章:

  • c++ 简单SOCKET 通信
  • android第一个项目--hello world
  • 又一个恶心的驱动的问题
  • 点击窗体任意位置拖动 c#
  • 天翼宣传的软肋
  • asp.net gridview 分页
  • Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据
  • WPF组件化开发技术实践
  • 犀利广州话
  • Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载
  • wpf mvvm模式 实例
  • 近期谷歌网页收录数量已经明显超过百度
  • JS操作cookie
  • JS实现拖拽
  • JS显示时间
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Fastjson的基本使用方法大全
  • gcc介绍及安装
  • Javascript Math对象和Date对象常用方法详解
  • js算法-归并排序(merge_sort)
  • laravel5.5 视图共享数据
  • linux安装openssl、swoole等扩展的具体步骤
  • Puppeteer:浏览器控制器
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 说说动画卡顿的解决方案
  • 智能网联汽车信息安全
  • ​如何防止网络攻击?
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (floyd+补集) poj 3275
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (十一)图像的罗伯特梯度锐化
  • (转)ABI是什么
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET Reactor简单使用教程
  • .net 流——流的类型体系简单介绍
  • .net 生成二级域名
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .net专家(高海东的专栏)
  • ::什么意思
  • @31省区市高考时间表来了,祝考试成功
  • [ C++ ] STL---stack与queue
  • [1127]图形打印 sdutOJ
  • [20160807][系统设计的三次迭代]
  • [20190401]关于semtimedop函数调用.txt
  • [Android]常见的数据传递方式
  • [EFI]Lenovo ThinkPad X280电脑 Hackintosh 黑苹果引导文件
  • [EWS]查找 文件夹
  • [Flexbox] Using order to rearrange flexbox children
  • [java面试]宇信易诚 广州分公司 java笔试题目回忆录