Posts Tagged ‘json

修正了几个BUG,已经在实际项目中使用,没有问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Array.prototype.indexOf || (Array.prototype.indexOf = function(value) {
for (var i in this) {
if (this[i] == value) {
return i;
[...]

昨天用js写了一个Json_encode的工具函数,附上模仿jQuery并加强的extend函数。
对于extend函数,主要加强的是可以遍历子对象来extend,而不是简单的覆盖。
getJSON的使用方法:

jlUtil.getJSON(obj:Object [, skip_arr:Array])
//skip_arr指定要忽略的键名

extend的使用方法:

jlUtil.extend(obj:Object [, obj2:Object…])
//这个函数需要jQuery
//如果只带一个参数,则这个obj将被extend到jlUtil本身
//如果带两个以上的参数,则第2个及以后的参数将被extend到第一个参数

下面是代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var jlUtil = {
getJSON: function(obj, skip_arr){
if(typeof obj == "number"
|| typeof obj == "boolean"){
return obj;
}else if(typeof obj == "string"){
return "’" + obj.replace("’","\\’") + "’";
}
 
var json = [];
skip_arr = skip_arr ? skip_arr : [];
for(var key in obj){
//skip function and the keys in skip arr
if(obj[key].constructor == Function
|| skip_arr.indexOf(key) != -1){
continue;
}
 
//in Array loop
if(!isNaN(parseInt(key)) || key.constructor [...]

今天被json编码中文搞死了。。。
json_encode中文的时候,会把每个中文字符encode成“\uxxxx”
而存进数据库的时候,“\”被屏蔽了,直接变成”uxxxx”
郁闷,我还以为是json_decode的问题。。。在网上查了一个下午资料都没解决
直到发现网上的文章都说json_encode是把中文encode成“\uxxxx”,我才顿悟。。。
经过一番实验,才发现问题出在存储到数据库的环节。。。
特此纪念一下
至于解决办法,当然是让”\”保留啦,把”\” replace成”\\”就可以啦~
还有一个问题,差点忘了,就是json_decode以后返回的不是array,而是stdclass,有一个很郁闷的问题,如果hash带下划线,如json['xx_yy']会出现很奇怪的问题,页面什么都不显示,也不报错,差点晕死。有一个办法解决,就是先foreach一下,把带下划线的存到一个array里面,或者直接整个转存成array。
//感谢软工的回复
由于已经是2年前写的博客,也没有写实际场景,我已经忘记json_decode是在什么场景下出现的问题。
如果我没有记错的话,当时json_decode还没有第二个参数。


关于博主

姓名:郑玏

性别:男

职业:IT工程师

爱好:KTV、乒乓球、台球、五子棋、围棋、编程

语言:中文、英语、闽南语

Email:

  • miki77: 一直都是用您的漫画下载器!觉得非常非常好用!!!加油!!谢谢!!! [...]
  • hzui: 希望站点包快出啊,现在就等这个了。 [...]
  • K_mol: 啊 大神 问一下 以后哪里下站点包呢 [...]
  • vamshu: 非常感谢楼主,以前一直都用博主的软件来下载漫画. [...]
  • blueink: 年前一直没空下漫画,快三个月没看了,多谢博主 [...]