json字符串与json对象、json序列化与反序列化

本文详细介绍了JSON对象与JSON字符串的区别、如何在JavaScript中互相转换它们,并解释了JSON的序列化与反序列化的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

json对象

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

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

JavaScript中的字符串是单引号或者双引号引起来的。将json对象用引号引起来即可成为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对象:
JSON.parse(string); js 方法
或者angular.fromJson(string)
或者 eval(“(” + jsonStr + “)” 方法

json对象转为json字符串:
JSON.stringify(object) js方法
或者angular.toJson(object)

Javascript支持的转换方式:
eval(‘(’ + jsonstr + ‘)’); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号
注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。

示例:

   /*  =======字符串和对象的转化========*/
            //字符串-->对象:JSON.parse(string); js 方法或者angular.fromJson(string)或者eval方法
            var jsonStr = '{"name":"李四"}';
            console.log(typeof(jsonStr));//string
            console.log("JSON.parse==" + JSON.parse(jsonStr).name);
            //[object Object],对象的属性,李四
            console.log("angular.fromJson==" + angular.fromJson(jsonStr).name);
            //[object Object],对象的属性,李四
            console.log("eval===" + eval("(" + jsonStr + ")").name);
            //[object Object],对象的属性,李四
            console.log(typeof(angular.fromJson(jsonStr)));//object

            // 对象-->字符串:JSON.stringify(object) js方法或者angular.toJson(object)
            var obj8 = {"name": '李四'};
            console.log(typeof(obj8));//object
            console.log("JSON.stringify==" + JSON.stringify(obj8));
            //{"name":"lisi"}
            console.log("angular.toJson==" + angular.toJson(obj8));
            //{"name":"lisi"}
            console.log(typeof(angular.toJson(obj8)));//string

参考:

Json对象和Json字符串的区别

Json对象与Json字符串互转(4种转换方式)

json:

JavaScript Object Notation(JavaScript 对象表示法),说白了Json就是一种字符串,一种带有格式的字符串,一种可读性很强,操作方便的字符串。因为Json字符串存储信息的方式和hashtable,Dictionary一样都是键值对的形式。

Json的结构很简单,也很复杂。简单是因为Json的结构只有两种:对象和数组。

对象和数组大家都很熟悉,在JS中对象的表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 “对象.key” 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。

数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [” 数值1”,”数值2”,”数值3”,…],取值方式和其他语言中一样,使用索引获取,字段值的类型和上面对象的属性值一样,可以是 数字、字符串、数组、对象几种。

JSON对象与JS对象字面量相比,有三点不同:
1、没有声明变量
2、没有末尾的分号
3、对象的属性(键)必须加双引号
数组类似。

js中:


var trav = {
    destination: "China",
    number: 5
};

json:

{
    "destination": "China",
    "number": 5
}

Json的序列化和反序列化

这里的序列化主要就是为了传输方便,将要传输的对象序列化为二进制的数据流,效率极高,接收时通过反序列化转化成对象,从而达到一个传输的效果。简单点来说,序列化就是将对象转换成Json格式的字符串,反序列化就是逆过程,将Json串转换成对象。

参考:

Json和其序列化和反序列化

JSON的自定义序列化和解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值