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

  前言:JSON是一个独立于任何语言的数据格式,因此,严格来说,没有“JSON对象”和“JSON字符串”这个说法(然而”菜鸟教程“和”W3school“使用了“JSON对象”和“JSON字符串”这个说法,我也有点懵),可以称为符合JSON格式的某某对象或者字符串,例如符合JSON格式的js对象,符合JSON格式的字符串(为啥不说成符合JSON格式的js字符串,因为在所有语言中字符串都有相同的定义:数字、字母、下划线组成的一串字符)。

  JSON语法中对于字符串的定义:是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

  1、JSON格式的字符串 ----> JSON格式的js对象:

  • 使用JSON.parse()函数

推荐使用,如果遇到浏览器不支持这个方法,保持淡定,到JSON官网下载json2.js,并引入到当前页面,就能使用了

var jsonStr = "{\"name\":\"zhangsan\",\"age\":23,\"email\":\"[email protected]\"}";
var json = JSON.parse(jsonStr);
console.log(json);//输出:Object {name: "zhangsan", age: 23, email: "[email protected]"}
  • 使用eval()函数

不推荐使用,会产生安全问题

var jsonStr = "{\"name\":\"zhangsan\",\"age\":23,\"email\":\"[email protected]\"}";var json = eval ("(" + jsonStr + ")"); console.log(json);//输出:Object {name: "zhangsan", age: 23, email: "[email protected]"}
  • 使用jQuery插件jQuery.parseJSON()
var jsonStr = "{\"name\":\"zhangsan\",\"age\":23,\"email\":\"[email protected]\"}";
var json = jQuery.parseJSON(jsonStr);
console.log(json);//输出:Object {name: "zhangsan", age: 23, email: "[email protected]"}

  补充:

  JSON解析器的parse()函数对于js对象是否符合JSON格式是不加限定的

  下面这种单引号套双引号的字符串,不符合JSON语法对字符串的定义,但也能使用上面三种方法转换成JSON格式的js对象

var jsonStr = ‘{"name":"zhangsan","age":23,"email":"[email protected]"}‘;
var json = jQuery.parseJSON(jsonStr);
console.log(json);//输出:Object {name: "zhangsan", age: 23, email: "[email protected]"}

  2、JSON格式的js对象 ----> JSON格式的字符串:

  • 使用JSON.stringify()
var json = {"name": "zhangsan", "age": 23, "email": "[email protected]"};
var jsonStr = JSON.stringify(json);
console.log(jsonStr);//输出:"{"name":"zhangsan","age":23,"email":"[email protected]"}"

  补充:

  与JSON解析器的parse()函数一样,stringify()对于js对象是否符合JSON格式也是不加限定的

var jsonObj = {name : "zhangsan",age : 23, email : "[email protected]"};
var jsonStr = JSON.stringify(json);
console.log(jsonStr);//输出:"{"name":"zhangsan","age":23,"email":"[email protected]"}"

参考文章:

(1) https://www.cnblogs.com/cdf-opensource-007/p/6384724.html

(2) https://www.cnblogs.com/longailong/p/7344567.html

原文地址:https://www.cnblogs.com/daihu/p/9773489.html

时间: 2024-10-05 22:06:02

JavaScript中,JSON格式的字符串与JSON格式的对象相互转化的相关文章

"{role_leader:'RD000010'}" 格式的字符串转json字符串

蔓蔓 10:35:34var str="{role_leader:'RD000010'}";var reg = /([^\:\{\}\[\]\,]+)\:([^\:\,\{\}\[\]]*)/g;str = str.replace (reg, "\"$1\":\"$2\"");str = str.replace(/\'/g,"");var json = JSON.parse(str); 我老婆教我的.记录下

关于JavaScript中0、空字符串、'0'是true还是false的总结

最近被问到关于js中空字符串是true还是false得问题,一时间没想起来,现在在chrome的console面板上输出代码测试一下. "" == false 结果是true   在js中空字符串与0相等  即空字符串等于false 0 == false  结果是tue   比较的时候 布尔类型的转换成number类型  false 为0  true 为1 “0” == fase 结果是true  字符串准成number Boolean("0") 结果是true 

JavaScript中如何判断变量是数组、函数或是对象类型

数组 ECMAScript5中Array.isArray是原生的判断数组的方法,IE9及以上支持.考虑到兼容性,在没有此方法的浏览器中,可以使用 Object.prototype.toString.call(obj) === '[object Array]'替代. var isArray = Array.isArray || function(obj) {     return Object.prototype.toString.call(obj) === '[object Array]'; }

JavaScript中如何判断变量是数组、函数还是对象类型

数组 ECMAScript5中Array.isArray是原生的判断数组的方法,IE9及以上支持.考虑到兼容性,在没有此方法的浏览器中,可以使用Object.prototype.toString.call(obj) === '[object Array]'替代. var isArray = Array.isArray || function(obj) { return Object.prototype.toString.call(obj) === '[object Array]'; } 函数 最

JavaScript中根据key的value对json排序

/** * 获取table表格的数据项. */ function getTableData(tableId){ var data = "{"; //定义数据变量 $("#" + tableId).find("input, select").each(function(){ //遍历表格中的input.select等标签 if($(this).attr("id")){ //如果此标签设置了id,则取出其中数据 data += &

JAVA中如何将一个json形式的字符串转为json对象

import java.io.*; import org.json.*; public class Demo { public static void main(String[] args) throws Exception { String str = "{\"a\":\"b\", \"c\":\"d\"}"; JSONObject a = new JSONObject(str); System.out.

angular json 格式的字符串转 json

var s = "[{"id":"5","skid":"2","specid":"38","pid":"24","proprice":"13","proimg":"","price":"5","inventor

——————————JavaScript中,对String字符串的一些操作——————————

————————————————————————————————————————————————————————————————————————————————————————————— <html> <title></title> <head></head> <body> <script language="JavaScript"> var arr=new Array(7,4,7,3,2,6,2,3)

Web前端面试指导(二十):JavaScript中如何翻转一个字符串?

题目点评 字符串作在程序中是非常常见的,因为程序中绝大部分的数据都可以当作字符串来处理.需要对字符的处理方法比较熟悉,在回答的时候尽量能够说出多种解决方法更好! 字符串翻转的方法 1)使用字符串函数 [javascript] view plain copy //str=hello function reverseString(str) { var array = str.split('');//['h','e','l','l','o']; array = array.reverse();// [