javaScript——json处理

String 2 json

方法一 eval()

1
data = eval('('+ jsonString+')');

eval 函数非常快,但是它可以编译任何 javascirpt 代码,这样的话就可能产生安全的问题。eval 的使用是基于传入的代码参数是可靠的假设的,有一些情况下,可能客户端是不可信任的。

如果基于安全的考虑的话,最好是使用一个 JSON 解析器。 一个 JSON 解析器将只接受 JSON 文本。所以是更安全的。

方法二 JSON.parse(jsonStr)

1
data = JSON.parse(jsonStr);

可选的 filter 参数将遍历每一个value key 值对, 并进行相关的处理。如:

1
2
3
myData = JSON.parse(text, function (key, value) {
return key.indexOf('date') >= 0 ? new Date(value) : value;
});

动态判断数据类型 转换为json

1
2
3
4
5
if (typeof result == 'object') {
data = result;
} else {
data = JSON.parse(result);
}

json 2 String

1
2
var jsonStr = JSON.stringify(jsonObj);


json 对象依据条件分组成两个对象 & json动态叠加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var bags = [{id=1},{ id=2 },{ id=3 }];


var courseHaves;
var courseNots;
for (var i in bags) {

var bags_s = JSON.stringify(bags[i]);

if (bags[i].id == 1) {
courseHaves = (courseHaves == null) ? bags_s : courseHaves.concat(","+bags_s);
} else {
courseNots = (courseNots == null) ? bags_s : courseNots.concat(","+bags_s);
}
}

$scope.courseHaves = JSON.parse("["+courseHaves+"]");
$scope.courseNots = JSON.parse("["+courseNots+"]");


// alert(JSON.stringify($scope.courseHaves)+"|"+$scope.courseHaves.length);
// alert(JSON.stringify($scope.courseNots)+"|"+$scope.courseNots.length);