数据类型,从结构上看,所有的数据最终都可以分成三种类型:

第一种类型是scalar(标量),也就是一个单独的string(字符串)或数字(numbers),比如“北京”这个单独的词。

第二种类型是sequence(序列),也就是若干个相关的数据按照一定顺序并列在一起,又叫做array(数组)或List(列表),比如“北京,东京”。

第三种类型是mapping(映射),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作hash(散列)或dictionary(字典),比如“首都:北京”。

Json格式规则:(Douglas Crockford提出的)

1) 并列的数据之间用逗号(“,”)分隔。

2) 映射用冒号(“:”)表示。

3) 并列数据的集合(数组)用方括号("[]")表示。

4) 映射的集合(对象)用大括号(“{}”)表示。

“北京市的面积为16800平方公里,常住人口1600万人。上海市的面积为6400平方公里,常住人口1800万。”

写成json格式就是这样:

[
    {
        "城市": "北京",
        "面积": 16800,
        "人口": 1600
    },
    {
        "城市": "上海",
        "面积": 6400,
        "人口": 1800
    }
]

JSON对象

有时候在做项目的时候时常将这两个概念弄混淆,尤其是在使用springmvc的时候,后台@RequestBody接受的是一个json格式的字符串,一定是一个字符串。 
先介绍一下json对象,首先说到对象的概念,对象的属性是可以用:对象.属性进行调用的。例如:

 var person={"name":"tom","sex":"男","age":"24"}//json对象
console.log(person.name);//在控制台输出tom
alert(typeof(person));//object

以上就是json对象。是一个用perosn.name这种方式进行属性的调用。第三行代码就是看person的类型,为object类型。

JSON字符串

字符串,我们常说的javascript中的字符串是单引号或者双引号引起来的。那么json字符串是什么概念呢?

    var b='{"name":"2323","sex":"afasdf","age":"6262"}';//json字符串
  console.log(b);//{"name":"2323","sex":"afasdf","age":"6262"}
 alert(typeof(b));//string

以上就是b就是一个字符串,也是一个json字符串,之所以叫json字符串,因为字符串的格式符合json的格式,所以叫做json字符串,第三行代码也匹配其中的类型为string。

json字符串和json对象的转换

json字符串转json对象,调用parse方法:

var b='{"name":"2323","sex":"afasdf","age":"6262"}'//json字符串
var bToObject=JSON.parse(b);
console.log(bToObject.name);//2323

json对象转为json字符串:

var a={"name":"tom","sex":"男","age":"24"}//json对象
var aToString=JSON.stringify(a);
console.log(aToString);//{"name":"tom","sex":"男","age":"24"}

Springmvc接受json字符串类型。

在有一段时间做项目,和朋友交流的时候,基于Rest风格的开发,一直理解为前端ajax提交的一个json对象,后台以@RequestBody接受的json对象,后来我发现自己错了,其实不然,前端传入后台的是一个json格式的字符串,下面有一个例子:

<script type="text/javascript">
$(document).ready(function(){
var saveDataAry=[];
var data1={"userName":"test","address":"gz"};
var data2={"userName":"ququ","address":"gr"};
saveDataAry.push(data1);
saveDataAry.push(data2);
$.ajax({
type:"POST",
url:"user/saveUser",
dataType:"json",
contentType:"application/json",
data:JSON.stringify(saveData),
success:function(data){ }
});
});
</script>

上面代码,首先push方法将其封装到数组中,其表现格式:

[
{"userName":"test","address":"gz"},
{"userName":"ququ","address":"gr"}
]

JSON.stringify(saveData)将其转换为json字符串:同时ajax请求的时候也要指定dataType: “json”,contentType:”application/json” 这样就可以轻易的将一个对象或者List传到后端代码处理

Js数据类型、Json格式、Json对象、Json字符串的更多相关文章

  1. JSon_零基础_005_将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面

    将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写:po(bean)代码: package com.west.webcourse.po; /** * 第 ...

  2. JSon_零基础_005_将po(bean)对象转换为JSon格式的对象字符串,返回给界面

    将po(bean)对象转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写po(bean)类: package com.west.webcourse.po; /** * 第01步:编写be ...

  3. JSon_零基础_004_将Set集合对象转换为JSon格式的对象字符串,返回给界面

    将Set集合对象转换为JSon格式的对象字符串,返回给界面 需要导入的jar包: 编写:servlet: package com.west.webcourse.servlet; import java ...

  4. JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面

    将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...

  5. JSon_零基础_002_将List类型数组转换为JSon格式的对象字符串,返回给界面

    将List类型数组转换为JSon格式的对象字符串,返回给界面 所需要导入的包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * ...

  6. 把普通对象转换成json格式的对象

    1.什么叫做JSON?JSON只是一种数据格式(它不是一种新的数据类型) var obj = {name: "中国", age: 5000};//->普通格式的对象 var ...

  7. 总结的一些json格式和对象/String/Map/List等的互转工具类

    总结的一些json格式和对象/String/Map/List等的互转工具类,有需要的可以看看,需要引入jackson-core-asl-1.7.1.jar.jackson-jaxrs-1.7.1.ja ...

  8. java保存json格式数据,保存字符串和读取字符串

    1.java保存json格式数据,保存字符串和读取字符串 import java.io.*; class RWJson { public void wiite(String s, String toS ...

  9. JavaScript中,JSON格式的字符串与JSON格式的对象相互转化

    前言:JSON是一个独立于任何语言的数据格式,因此,严格来说,没有“JSON对象”和“JSON字符串”这个说法(然而”菜鸟教程“和”W3school“使用了“JSON对象”和“JSON字符串”这个说法 ...

  10. 闲扯淡json格式与对象

    在这里推荐使用http://json.tongxiehui.net/ 这个在线解析jso格式 JSON 语法是 JavaScript 对象表示语法的子集. 数据在名称/值对中 数据由逗号分隔 花括号保 ...

随机推荐

  1. Java实现 蓝桥杯VIP 算法提高 数的划分

    算法提高 数的划分 时间限制:1.0s 内存限制:256.0MB 问题描述 一个正整数可以划分为多个正整数的和,比如n=3时: 3:1+2:1+1+1: 共有三种划分方法. 给出一个正整数,问有多少种 ...

  2. Java实现 LeetCode 2 两数相加

    两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表 ...

  3. Java实现 蓝桥杯 算法训练 Multithreading

    问题描述 现有如下一个算法: repeat ni times yi := y y := yi+1 end repeat 令n[1]为你需要算加法的第一个数字,n[2]为第二个,-n[N]为第N个数字( ...

  4. let与var的一个重要区别

    我们先来看下面这一段代码 html代码 <ul> <li>sdfsdagsdgsa</li> <li>sdfsdagsdgsa</li> & ...

  5. 7.keras-模型保存和载入

    keras-模型保存和载入 1.数据的载入与预处理 import numpy as np from keras.datasets import mnist from keras.utils impor ...

  6. 提高编译速度! 第一次运行需要注释掉,不然会报错,因为需要编译SO库文件 !

    // 提高编译速度! 第一次运行需要注释掉,不然会报错,因为需要编译SO库文件 ! tasks.whenTaskAdded { task -> if (task.name.contains(&q ...

  7. spring-framework 源码的下载与构建

    整体流程: 本地环境准备 找到源码地址并拉取到本地 根据IDE工具查看源码中提供的不同的安装说明并具体操作 构建会出现的的错误及解决 一.本地环境准备 spring-framework 源码使用gra ...

  8. 创建使用mysql表

    1.展示所有数据库 show databases;2.选中数据库 use database_name(;)3.创建数据库 create database database_name;4.使用2选中数据 ...

  9. Memory layout

    Text Segment       Text Segment,通常也被称为代码段. 为了防止 heap 或是 stack 的溢出,text 段常被安排在 heap 或是 stack 之后. Text ...

  10. Ubuntu:E: Sub-process /usr/bin/dpkg returned an error code (1)

    Ubuntu系统安装软件时报以下错误: E: Sub-process /usr/bin/dpkg returned an error code (1) 解决: mv /var/lib/dpkg/inf ...