之前一直把JSON想做一种数据类型,通过这几天的使用,发现其实JSON只是一种数据的格式,而与int string double等等数据类型是有本质的区别。

JSON(JavaScript Object Notation)是JavaScript编程语言的一个子集。正因为JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中。

就像初高中的课本一样,想要掌握一样新技术、新知识,我们首先要掌握它的意义,也就是它存在的价值。

JSON之所以能够广泛使用,与js的重要性提升不无关系。如果我们按照JSON的格式定义了一个对象,那么我们就可以通过对象名.键名来过去其中的数据。

我将JSON的使用分为两个部分

1、将其他数据类型转换为JSON

1.1 首先提到的是JSON官方提到的方法:JSON.stringify();

  语法

  1.      JSON.stringify(value[, replacer [, space]])  

  参数

    value
   将要序列化成 JSON 字符串的值。
    replacer 可选
    如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被  序列化到最终的 JSON 字符串中。
    space 可选
   指定缩进用的空白字符串,用于美化输出(pretty-print)。
举例说明:
  ① 只有value时:

  1. <script type="text/javascript">
  2. var student = new Object();
  3. student.name="Leon";
  4. student.age = "24";
  5. student.college = "shiep";
  6.  
  7. var json = JSON.stringify(student);
  8. console.log(json);
  9. </script>

输出结果:

  1. {"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.

  1. <script type="text/javascript">
  2. var student = new Object();
  3. student.name="Leon";
  4. student.age = "24";
  5. student.college = "shiep";
  6.  
  7. student.toJSON = function(key){
  8. var replacement = new Object();
  9. for(var val in this){
  10. if(typeof(this[val])==='string')
  11. replacement[val] = this[val].toUpperCase();
  12. else
  13. replacement[val] = this[val]
  14. }
  15. return replacement;
  16. }
  17.  
  18. var json = JSON.stringify(student);
  19. console.log(json);
  20. </script>

数组+函数:

  1. <script type="text/javascript">
  2.  
  3. var students = new Array() ;
  4. students[0] = "Lanny";
  5. students[1] = "dong";
  6. students[2] = "I love you";
  7.  
  8. var json = JSON.stringify(students,switchJson);
  9.  
  10. function switchJson(key,value){
  11. return value.toString().toUpperCase();
  12. }
  13. console.log(json);
  14. </script>

输出为:

  1. "LANNY,DONG,I LOVE YOU"

③参数中有数组:

数组+数组

  1. <script type="text/javascript">
  2. var students = new Array();
  3. students[0] = "Leon";
  4. students[1] = "James";
  5. students[2] = "Frank";
  6.  
  7. var schools = new Array();
  8. schools[0] = "shiep";
  9. schools[1] = "fdu";
  10.  
  11. var json1 = JSON.stringify(students,schools);
  12. var json2 = JSON.stringify(schools,students);
  13.  
  14. console.log("json1="+json1);
  15. console.log("json2="+json2);
  16. </script>

输出结果为:

  1. json1=["Leon","James","Frank"]
  2. json2=["shiep","fdu"]

如果两个参数均是数组的话,只序列化前一个数组。

对象+数组

  1. <script type="text/javascript">
  2. var student = new Object();
  3. student.name = "Leon";
  4. student.age = "24";
  5. student.college = "shiep";
  6.  
  7. var students = new Array();
  8. students[0] = "college";
  9. students[1] = "age";
  10.  
  11. var json = JSON.stringify(student,students);
  12. console.log(json);
  13. </script>

结果为:

  1. {"college":"shiep","age":"24"}

④第三个参数

  如果 space 是数字,则返回值具有空白的文本缩进指定数目在每个级别的。 如果 space 大于 10 时,文本缩进 10 个空白。

  如果 space 为非空字符串,如“\t”,返回值文本缩进与字符串的字符在每个级别。

  如果 space 为大于 10 个字符的字符串,使用前 10 个字符。  

1.2 好多时候需要转换的信息并不是现成的对象,需要我们来拼凑,这时候需要

下面的代码是将一张表格以一个行 为单位组成json

  1. <script type="text/javascript">
  2. var fitModelsingle = new Array();
  3. $('#fitModelDispArea tr').each(function () {
  4. var tdArry = $(this).find("td");
  5. 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() + "\"}");
  6. });
  7. //fitModelsingle.join();
  8. //if (fitModelsingle.length != 0) {
  9. // var fitModelList = "[" + fitModelsingle + "]";
    //}
    var fitModelList = JSON.stringify(fitModelsingle); //以上注释的三句等价于这一句
    console.log(fitModelList);
  10. </script>

1.3后台传递过来的好多数据都是字符串形式,并且双引号是由&quot 表示,此时要想将格式正确,但是字符有问题的字符串转换为JSON:

如:后台传入一个list

  1. list=list.replace(/&quot;/g, '"');
  2. list= $.parseJSON(mathchingModelList);

输出的list便是JSON数据。  注:用$.parseJSON()需要引入jQuery包。

2、将JSON转化为其他数据类型

JSON.parse 把一个json字符串解析成对象。

JSON数据的基础使用的更多相关文章

  1. JSON数据解析 基础知识及链接收集

    JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...

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

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

  3. 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 ...

  4. 将Json数据转换为ADO.NET DataSet对象

    Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据.但是有些情况下DataSet Conver ...

  5. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  6. Jackson序列化和反序列化Json数据完整示例

    Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会 ...

  7. PHP json数据格式化方法

    php 的json_encode能把数组转换为json格式的字符串.字符串没有缩进,中文会转为unicode编码,例如\u975a\u4ed4.人阅读比较困难.现在这个方法在json_encode的基 ...

  8. iOS - JSON 数据解析

     iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...

  9. spingmvc 返回json数据日期格式化方法

    第一种: json 用的是这个依赖 <!-- JSON lib 开发包 以及它的依赖包 --> <dependency> <groupId>com.fasterxm ...

随机推荐

  1. c++ 指针的简单用法

    对于指针,其实只需要明白几点就可以. 1.指针,是一个数值为地址的变量,这里尤其注意,指针变量的值是地址!就是例如40002这种像门牌号的地址值,其实就是内存中的一个编号. 2.&,该符号的意 ...

  2. (原+译)LUA调用C函数

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5804924.html 原始网址: http://www.troubleshooters.com/cod ...

  3. LigerUI 分页 MVC

    Javascirpt代码 $("#showData").ligerGrid({ columns: [ { display: '编号', name: 'L_ID', align: ' ...

  4. C#代码实现,确保windows程序只有一个实例(instance)

    static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static vo ...

  5. scheme代码高亮

    (defun iedit-symbol-in-defun () "Enter `iedit-mode' to rename the symbol in current function, o ...

  6. 十一、外观(Facade)模式--结构模式(Structural Pattern)

    外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式.门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行. 门面模式提供一个高层次 ...

  7. STL中,迭代器的分类

    五类迭代器如下: 1.输入迭代器:只读,一次传递    为输入迭代器预定义实现只有istream_iterator和istreambuf_iterator,用于从一个输入流istream中读取.一个输 ...

  8. 怎么查看chrome网络日志

    最近在分析一个页面访问慢的问题,在分析的除了wireshark抓包等手段外,还用到了chrome的日志辅助分析 使用 chrome://net-internals/#events 可以打开日志追踪窗口 ...

  9. FreeMarker的模板文件语法

    FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:<#-- ... -->格式部分,不会输 ...

  10. MVC4中 jquery validate 不用submit方式验证表单或单个元素

    正确引入MVC4 jquery验证的相关文件 <script src="/Scripts/jquery-1.4.4.js"></script> <sc ...