cookie可以存一个json吗或者存一个数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cookie可以存一个json吗或者存一个数组相关的知识,希望对你有一定的参考价值。

1、Cookie里面只能放String类型的值。
2、要保存json或数组格式的值,可以转为字符串后保存到cookies中。
3、从cookies中读取出来的值,通过eval把字符转为json或者再次解析出数组即可。
例子:
var a[2]; //a是一个数组
a[0]=0;a[1]=1;a[2]=2;//数组值分别是 0 1 2
var c=a[0]+","+a[1]+","+a[2]; //此处是通过逗号连接上面的数组,c的值是 c="0,1,2"
下面要做的就是把c的值写入cookies即可。
从cookies读取出c的值,再用split函数以逗号分割c即得到原来a数组。
参考技术A 你把整个json串作为一个Value存,取出来后eval
这个方式也是不错的,但会涉及到一个问题,如果json属性里的值中有引号,使用eval再生成json对象时,很有可能会发生错误。
所以在把json转换成字符串时,其值最好先如使用base64编码一下。
当把表示json的字符串使用eval转换成json对象后,再把其中属性的值反编码回来。

OC数组的简单使用NSArray

  和上一篇文章一样,数组的重要性不言而喻,在OC编程的过程中我们会不断的使用到NSArray,和C语言不同的是,我们这里的数组只能存OC对象类型,不能存C语言基本数据类型,也不能存NSNull类型,但是我们这里的数组可以存多种对象类型,比如,在同一个数组里面,既可以存字符串类型,又可以存对象化了以后的整数类型,甚至是另外一个数组,也可以存其他的对象类型(将C语言的数据类型转换成OC的对象类型下面会讲到),不过在同一个数组里面尽量存同一种数据类型,这是为了方便使用。在OC数组里面以nil表示结尾,如果你在数组的中间存了一个nil的数据,那么在nil后面的数据是读取不到的。

  和NSString一样,数组可以分为可变数组(NSMutableArray)和不可变数组(NSArray),首先,我们还是从不可变数组说起,因为可变数组只是在不可变数组上加上了一些新的方法。

一、不可变数组

1.不可变数组的创建

技术分享图片

2.访问数组的对象个数可以使用count属性,回忆一下,在字符串中访问字符串的长度我们使用的是length属性。

3.获取某个对象的索引值使用方法:indexOfObject

4.获取某个索引值对应的对象使用方法:objectAtIndex

5.判断数组是否包含某个对象使用方法:containsObject

6.获取数组第一个元素:arr[0]

           [arr objectAtIndex:0]

           [arr firstObject]

7.获取数组最后一个元素:[arr lastObject]

二、可变数组

  可变数组相对于不可变数组和可变字符串相对于不可变字符串类似,都增加了一些方法和属性,最主要的就是增、删、改、插入。

1.创建可变数组

技术分享图片

2.向可变数组里面增加一个对象使用方法:addObject

3.在可变数组里面删除对象:

  [removeObject:@"xianggang"];

        [ar removeObject:@"bj"];

        [ar removeObjectAtIndex:1];

        [ar removeAllObjects];

4.更换数组里面的一个对象

  [ar exchangeObjectAtIndex:0 withObjectAtIndex:1];

5.插入一个对象

  [ar insertObject:@"bj" atIndex:1];

三、封装(即类型转换)

1.将C语言基本数据类型封装为OC对象类型我们使用的是NSNumber;如:

NSNumber *number = [NSNumber numberWithInt:20];

NSNumber *number1 = [NSNumber numberWithFloat:20.0];

2.将C语言的结构体和枚举封装了OC对象类型需要使用NSValue;如:

struct CGRect{

          CGPoint point;

          CGSize size;

        };

 

 struct CGPoint {

 

         CGFloat x;

 

         CGFloat y;

 

         };

 

         

 

        struct CGSize {

 

            CGFloat width;

 

            CGFloat height;

 

        };

 

         */

 

        CGRect rect = CGRectMake(100, 100, 200, 150);

 

        NSValue *rectValue = [NSValue valueWithRect:rect];

  

以上是关于cookie可以存一个json吗或者存一个数组的主要内容,如果未能解决你的问题,请参考以下文章

请教Express 中的 session 和 cookie 的安全问题

redis怎么存数组和获取数组?

cookie超过最大长度限制如何解决

MATLAB数据如何存成数组?

redis 怎么存数组和获取数组

localstorage,cookie等用法