JSON对象 / JSON字符串区别

  抛出一个最常见的疑问:什么是“JSON对象”,什么是“JSON字符串”,它俩的区别是什么?

  废话不多说,直接上代码。  

1.JSON对象:

 // javascript对象字面量写法
var obj = { “name” : “Jay”,“age” : “18” }; //JSON对象写法
var json = {name : "jay", age : "18" };

 

  在平时的应用中,这两种写法除去对象的属性名上有无“引号”外,没有任何区别,使用 console.log () 分别在控制台输出,结果如下:

 console.log(obj); // 输出对象字面量
console.log(json); // 输出 json 对象
------------------------------------------
//显示结果
//对象字面量
Object
age: 18
name: "Jay"
__proto__ : Object //json 对象
Object
age: 18
name: "jay"
__proto__: Object

  事实证明,这两种写法在JS中实质上是一样的,我们平时所说的“JSON对象”,通常就是上述两种方式来定义的。使用起来就像访问js对象的属性一样,通过"."来引用:

console.log(obj.name); //  Jay
console.log(json.age); // 18

  

2.JSON字符串

var jsonStr = ‘{“name”:“jay” , “age” : “18”}’;

  顾名思义,JSON字符串本质上是一个“字符串”

  程序员一提到字符串,首先想到的可能是用“引号”包裹的一串字符,例如“abc” , ‘def’ 这样。所以我们可以很好的来区分JSON字符串和JSON对象,被引号包裹起来的字面量书写形式的JSON对象,就是JSON字符串。

JSON对象 / JSON字符串相互转化

1.JSON对象 -----------------------------》 JSON 字符串:

  ①JSON.stringify(obj) --- 常用 ---

// 使用方法
var obj = { name : "jay" , age : "18"};
var str = JSON.stringify(obj); alert(str); //显示结果: '{"name":"jay","age":"18"}'  

  

  ②JSON.toJSONstring()

  找了半天,具体没找到怎么用,还要引入包,算了算了,弃了(无情)。

  

2.JSON 字符串 -----------------------------》 JSON 对象:

  ①JSON.parse() --- 常用 ---

var str = '{ "name" : "jay" , "age" : "18"}';
var obj = JSON.parse(str); console.log(obj); // 显示结果 : {name: "jay", age: "18"}

  ②eval('('+str+')')

var str = '{ "name" : "jay" , "age" : "18"}';
var obj = eval('('+str+')'); console.log(obj); // 显示结果 : {name: "jay", age: "18"}

  

  ③$.parseJSON(str)

var str = '{ "name" : "jay" , "age" : "18"}';
var obj = $.parseJSON(str); console.log(obj);
// 显示结果 : {name: "jay", age: "18"}

应用场景举例:提交数据到后端(php代码)

前段html:

<table>
<tr class="student">
<td>姓名:<input type="text" name="name"></td>
<td>年龄:<input type="text" name="age"></td>
</tr>
<tr class="student>
<td>姓名:<input type="text" name="name"></td>
<td>年龄:<input type="text" name="age"></td>
</tr>
</table>

  

前端js:

//将多组学生信息,传递到后端
var students = []; $(".student").each(function(index , element){
var name= $(element).find("input[name=name]").val().trim();
var age = $(element).find("input[name=age]").val().trim() var tmp = {
name : name,
age : age
} student.push(tmp);
}) var form = new FormData(); form.append("students",JSON.stringify(students)); $.(ajax(){
type : "post",
data : form,
url : postUrl, ....... })

php代码:

 

$students = $_REQUEST['students'];
// 第二个参数为true表示数组类型;省略第二个参数,表示为对象类型
$students = json_decode($student,true); //输出学生信息
foreach($students as $item){
  echo '学生:' . $item['name'] . '的年龄是' . $item['age'] ;
}

  

 

【Js】JSON对象、JSON字符的使用总结的更多相关文章

  1. Android-Gson解析JSON数据(JSON对象/JSON数组)

    上一篇博客,Android-解析JSON数据(JSON对象/JSON数组),介绍了使用 org.json.JSONArray;/org.json.JSONObject; 来解析JSON数据: Goog ...

  2. Android-解析JSON数据(JSON对象/JSON数组)

    在上一篇博客中,Android-封装JSON数据(JSON对象/JSON数组),讲解到Android真实开发中更多的是去解析JSON数据(JSON对象/JSON数组) 封装JSON的数据是在服务器端进 ...

  3. Android-封装JSON数据(JSON对象/JSON数组)

    Android-封装JSON数据(JSON对象/JSON数组),一般情况下不会在Android端封装JSON的数据,因为封装JSON的数据是在服务器端进行封装了,Android更多的工作是解析(JSO ...

  4. Swift开发中 JSON对象/JSON字符串/Data的互转

    本文将介绍Swift开发中常用的转换(JSON对象/JSON字符串/Data之间的互相转换) #pragma mark - JSON(对象)----->JSON字符串 1.原生方法 //JSON ...

  5. JSon 对象转字符的一些方法

    引用System.Web.Entity.dll public static string ToJSON(this object obj) { JavaScriptSerializer serializ ...

  6. js中解析json对象:JSON.parse()用于从一个字符串中解析出json对象, JSON.stringify()用于从一个对象解析出字符串。

    JSON.parse()用于从一个字符串中解析出json对象. var str = '{"name":"huangxiaojian","age&quo ...

  7. 关于js中的json对象,json串,数组之间相互转换

    将json对象转换成string var loginUser = {username: username, password: password}//方式一 localStorage.setItem( ...

  8. javascript中json对象json数组json字符串互转及取值

    今天用到了json数组和json对象和json类型字符串之间互转及取值,记录一下: 1.json类型的字符串转换为json对象及取值 var jsonString = '{"bar" ...

  9. JSON对象 JSON字符串 JSON数组

    JSON对象: var str2 = { "name" :  "andy", "gender" : "man" , &q ...

  10. json字符串转成 json对象 json对象转换成java对象

    import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; 依赖包 <dependency> ...

随机推荐

  1. TortoiseGit客户端安装及使用(上传代码到git@osc

    用TortoiseGit客户端之前要下载安装git http://git-scm.com/download/win 下载完安装完就可以了,之后好像就用不上了,全交给TortoiseGit客户端了 第一 ...

  2. Automapper 实现自动映射

    出于安全考虑,在后台与前台进行数据传输时,往往不会直接传输实体模型,而是使用Dto(Data transfer object 数据传输对象),这样在后台往前台传递数据时可以省略不必要的信息,只保留必要 ...

  3. Unity 多个Android sdk 插件如何组织目录

    一般Android 插件放在 Assets/Plugins/Android/ 下, 但是一个项目可能要用到多个sdk , 比如既要用 阿里九游的sdk 又要用 share sdk 怎么办呢, 难道要只 ...

  4. mysql:删除表数据drop、truncate和delete的用法

    程度从强到弱 1.drop  table tb        drop将表格直接删除,没有办法找回 2.truncate (table) tb       删除表中的所有数据,不能与where一起使用 ...

  5. March 27 2017 Week 13 Monday

    A book that remains shut is but a block. 有书闭卷不阅读,无异于一块木头. I had planned to buy a book and read it ev ...

  6. OpenGL中的数据——Buffer

    OpenGL中主要包括了两种数据——Buffer和Texture. Buffer用于储存线性数无类型据块,可以看成普通的内存块,而Texture则用于储存多维数据,一般储存图像或者其他数据. Buff ...

  7. 怎么在overflow-y:sroll的情况下 隐藏滚动条

    当我们的内容超出了我们的div,往往会出现滚动条,影响美观. 尤其是当我们在做一些导航菜单的时候.滚动条一出现就破坏了UI效果.  我们不希望出现滚动条,也不希望超出去的内容被放逐,就要保留鼠标滚动的 ...

  8. HDU 4165 卡特兰

    题意:有n个药片,每次吃半片,吃2n天,那么有多少种吃法. 分析:如果说吃半片,那么一定要吃过一整片,用 ) 表示吃半片,用 ( 表示吃整片,那么就是求一个正确的括号匹配方案数,即卡特兰数. 卡特兰数 ...

  9. luogu P3787 冰精冻西瓜

    嘟嘟嘟 好题,好题…… 看这个修改和询问,就知道要么是求完dfs序后线段树维护,要么是树剖.又因为这道题都是子树的操作,没有链上的,所以线段树就够了. 然而重点不是这个.这道题最麻烦的是线段树push ...

  10. 【转】Js中Prototype、__proto__、Constructor、Object、Function关系介绍

    一    Prototype.__proto__与Object.Function关系介绍        Function.Object:Js自带的函数对象.         prototype,每一个 ...