JSON数据的基础使用
之前一直把JSON想做一种数据类型,通过这几天的使用,发现其实JSON只是一种数据的格式,而与int string double等等数据类型是有本质的区别。
JSON(JavaScript Object Notation)是JavaScript编程语言的一个子集。正因为JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中。
就像初高中的课本一样,想要掌握一样新技术、新知识,我们首先要掌握它的意义,也就是它存在的价值。
JSON之所以能够广泛使用,与js的重要性提升不无关系。如果我们按照JSON的格式定义了一个对象,那么我们就可以通过对象名.键名来过去其中的数据。
我将JSON的使用分为两个部分
1、将其他数据类型转换为JSON
1.1 首先提到的是JSON官方提到的方法:JSON.stringify();
语法
JSON.stringify(value[, replacer [, space]])
参数
value- 将要序列化成 JSON 字符串的值。
replacer可选- 如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被 序列化到最终的 JSON 字符串中。
space可选- 指定缩进用的空白字符串,用于美化输出(pretty-print)。
- 举例说明:
- ① 只有value时:
<script type="text/javascript">
var student = new Object();
student.name="Leon";
student.age = "24";
student.college = "shiep"; var json = JSON.stringify(student);
console.log(json);
</script>输出结果:
{"name":"Leon","age":"24","college":"shiep"}②参数中有函数:
对象+函数
During the serialization process, if a toJSON method exists for the value argument, JSON.stringify first calls the toJSON method. If it does not exist, the original value is used. Next, if a replacer argument is provided, the value (original value or toJSON return-value) is replaced with the return-value of the replacer argument.Finally, white spaces are added to the value based on the optional space argument to generate the final JSON text.
<script type="text/javascript">
var student = new Object();
student.name="Leon";
student.age = "24";
student.college = "shiep"; student.toJSON = function(key){
var replacement = new Object();
for(var val in this){
if(typeof(this[val])==='string')
replacement[val] = this[val].toUpperCase();
else
replacement[val] = this[val]
}
return replacement;
} var json = JSON.stringify(student);
console.log(json);
</script>数组+函数:
<script type="text/javascript"> var students = new Array() ;
students[0] = "Lanny";
students[1] = "dong";
students[2] = "I love you"; var json = JSON.stringify(students,switchJson); function switchJson(key,value){
return value.toString().toUpperCase();
}
console.log(json);
</script>输出为:
"LANNY,DONG,I LOVE YOU"
③参数中有数组:
数组+数组
<script type="text/javascript">
var students = new Array();
students[0] = "Leon";
students[1] = "James";
students[2] = "Frank"; var schools = new Array();
schools[0] = "shiep";
schools[1] = "fdu"; var json1 = JSON.stringify(students,schools);
var json2 = JSON.stringify(schools,students); console.log("json1="+json1);
console.log("json2="+json2);
</script>输出结果为:
json1=["Leon","James","Frank"]
json2=["shiep","fdu"]如果两个参数均是数组的话,只序列化前一个数组。
对象+数组
<script type="text/javascript">
var student = new Object();
student.name = "Leon";
student.age = "24";
student.college = "shiep"; var students = new Array();
students[0] = "college";
students[1] = "age"; var json = JSON.stringify(student,students);
console.log(json);
</script>结果为:
{"college":"shiep","age":"24"}④第三个参数
如果 space 是数字,则返回值具有空白的文本缩进指定数目在每个级别的。 如果 space 大于 10 时,文本缩进 10 个空白。
如果 space 为非空字符串,如“\t”,返回值文本缩进与字符串的字符在每个级别。
如果 space 为大于 10 个字符的字符串,使用前 10 个字符。
1.2 好多时候需要转换的信息并不是现成的对象,需要我们来拼凑,这时候需要
下面的代码是将一张表格以一个行 为单位组成json
<script type="text/javascript">
var fitModelsingle = new Array();
$('#fitModelDispArea tr').each(function () {
var tdArry = $(this).find("td");
fitModelsingle.push("{\"VehicleBrandName\":\"" + tdArry.eq(0).text() + "\",\"VehicleManufacturerName\":\"" + tdArry.eq(1).text() + "\",\"VehicleSeriesPureName\":\"" + tdArry.eq(2).text() + "\",\"ModelYear\":\"" + tdArry.eq(3).text() + "\",\"VehicleModelName\":\"" + tdArry.eq(4).text() + "\"}");
});
//fitModelsingle.join();
//if (fitModelsingle.length != 0) {
// var fitModelList = "[" + fitModelsingle + "]";
//}
var fitModelList = JSON.stringify(fitModelsingle); //以上注释的三句等价于这一句
console.log(fitModelList);
</script>1.3后台传递过来的好多数据都是字符串形式,并且双引号是由" 表示,此时要想将格式正确,但是字符有问题的字符串转换为JSON:
如:后台传入一个list
list=list.replace(/"/g, '"');
list= $.parseJSON(mathchingModelList);输出的list便是JSON数据。 注:用$.parseJSON()需要引入jQuery包。
2、将JSON转化为其他数据类型
JSON.parse 把一个json字符串解析成对象。
JSON数据的基础使用的更多相关文章
- JSON数据解析 基础知识及链接收集
JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段
ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...
- 将Json数据转换为ADO.NET DataSet对象
Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据.但是有些情况下DataSet Conver ...
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
- Jackson序列化和反序列化Json数据完整示例
Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会 ...
- PHP json数据格式化方法
php 的json_encode能把数组转换为json格式的字符串.字符串没有缩进,中文会转为unicode编码,例如\u975a\u4ed4.人阅读比较困难.现在这个方法在json_encode的基 ...
- iOS - JSON 数据解析
iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...
- spingmvc 返回json数据日期格式化方法
第一种: json 用的是这个依赖 <!-- JSON lib 开发包 以及它的依赖包 --> <dependency> <groupId>com.fasterxm ...
随机推荐
- SQL语句 计算某段时间工作日的天数(除了周六日)
--只是加了固定日期,可以根据需求给成变量形式(BY 少年工藤) -思路:根据日期区间循环判断每一天是周日(1).周六(7)不变,其他加1 1 DECLARE @DAY DATE,@COUNT INT ...
- nodejs的简单服务器程序
下面是参考<Jquery.Jquery UI 及Jquery Mobile>一书中的nodej服务器程序 var http = require('http'), url = require ...
- Jquery表单与表格的运用
1,表单的应用: a. 单行文本框的应用 多行文本框的应用 b.复选框的框的应用 c.下拉框的应用 d.表单验证 2,表格的应用: a. 表格变色 b.表格展开关闭 d.表格内容筛选 3,多行文本框 ...
- poj 1177 picture
题目链接:http://poj.org/problem?id=1177 分析:这道题主要用到了线段树.扫描线以及离散化的相关算法. 离散化 离散化是当数字不多但是范围很大时采用的一种方法,将大区间的数 ...
- 负载均衡集群之LVS配置命令
ipvs/ipvsadm 添加集群服务--> ipvsadm -A|E -t|u|f VIP[:Port] -s scheduler [-p timeout] [-O] [-M netmask] ...
- mysql 二进制安装的基本步骤
-1 mysql数据库位置 二进制包:/usr/local/mysql/data 这里手动创建新的位置: 创建一个新的lv,挂在点:mydat ...
- wordpress教程之在非single.php页面调用文章的信息
使用Wordpress的朋友可能遇到这样的问题,在非single.php页面中我们有时候想要调用当前文章的标题.内容等信息,而Wordpress在生成文章页的时候在各个页面中唯一不变的只有当前的文章I ...
- 2015第9周三html5学习0
之前规划了2015关注的技术方向是html5和node.js,虽然前面也搜集过html5相关的评论介绍性能容,但对如何学习和有哪些可利用要经常的看的资源有明显的界定,刚上网搜索了半个多小时,对结 ...
- RabbitMQ中文入门教程
原文地址:http://adamlu.net/dev/2011/09/rabbitmq-get-started/ 这系列教程是翻译官方入门教程. 第一部分:Hello World第二部分:工作队列(W ...
- UESTC_摩天轮 2015 UESTC Training for Dynamic Programming<Problem K>
K - 摩天轮 Time Limit: 10000/4000MS (Java/Others) Memory Limit: 262143/262143KB (Java/Others) Submi ...