[英]Converting JSON to a Javascript array using pure Javascript
我有JSON文件的以下部分。 我需要使用纯Javascript转换为Javascript数组。 具体来说,我只需要有一个数组userid
, movieid
, rating
和timestamp
才能用于rating
大于4.0
。
[{
"rating": 3.0,
"ratingsPK": {
"movieId": 2017,
"userId": 610
},
"timestamp": 913815387
}, {
"rating": 5.0,
"ratingsPK": {
"movieId": 2017,
"userId": 654
},
"timestamp": 959098930
}, {
"rating": 4.0,
"ratingsPK": {
"movieId": 2017,
"userId": 856
},
"timestamp": 1059863336
}, {
"rating": 2.0,
"ratingsPK": {
"movieId": 2017,
"userId": 903
},
"timestamp": 903628492
}, {
"rating": 3.5,
"ratingsPK": {
"movieId": 2017,
"userId": 1185
},
"timestamp": 1100560205
}]
您可以使用JSON.parse()
将JSON字符串转换为JavaScript对象。 然后使用带有适当谓词的Array#filter
精确获取所需的内容(在您的情况下, timestamp
大于4)。
使用JSON.parse()
和Array.prototype.filter()
函数的简单“ 单行 ”解决方案:
var json_data = '[{"rating":3.0,"ratingsPK":{"movieId":2017,"userId":610},"timestamp":913815387},{"rating":5.0,"ratingsPK":{"movieId":2017,"userId":654},"timestamp":959098930},{"rating":4.0,"ratingsPK":{"movieId":2017,"userId":856},"timestamp":1059863336},{"rating":2.0,"ratingsPK":{"movieId":2017,"userId":903},"timestamp":903628492},{"rating":3.5,"ratingsPK":{"movieId":2017,"userId":1185},"timestamp":1100560205}]'; var arr = JSON.parse(json_data).filter(function(o){ return o.rating >= 4; }); console.log(arr);
相同,但以EcmaScript6方式(使用箭头功能 ):
var json_data = '[{"rating":3.0,"ratingsPK":{"movieId":2017,"userId":610},"timestamp":913815387},{"rating":5.0,"ratingsPK":{"movieId":2017,"userId":654},"timestamp":959098930},{"rating":4.0,"ratingsPK":{"movieId":2017,"userId":856},"timestamp":1059863336},{"rating":2.0,"ratingsPK":{"movieId":2017,"userId":903},"timestamp":903628492},{"rating":3.5,"ratingsPK":{"movieId":2017,"userId":1185},"timestamp":1100560205}]'; var arr = JSON.parse(json_data).filter((o) => o.rating >= 4 ); console.log(arr);
转换为对象并过滤以进行评级后,您可以仅获取所需对象的各个部分而得到一个数组。
var data = '[{"rating":3.0,"ratingsPK":{"movieId":2017,"userId":610},"timestamp":913815387},{"rating":5.0,"ratingsPK":{"movieId":2017,"userId":654},"timestamp":959098930},{"rating":4.0,"ratingsPK":{"movieId":2017,"userId":856},"timestamp":1059863336},{"rating":2.0,"ratingsPK":{"movieId":2017,"userId":903},"timestamp":903628492},{"rating":3.5,"ratingsPK":{"movieId":2017,"userId":1185},"timestamp":1100560205}]', result = JSON.parse(data).filter(function (a) { return a.rating > 4; }).map(function (a) { return [a.ratingsPK.userId, a.ratingsPK.movieId, a.rating, a.timestamp]; }); console.log(result);
JSON.parse()可用于将JSON转换为JS对象。 以下是适合您需要的精品。
var data='[{"rating":1.0,"ratingsABC":{"movieId":2017,"userId":123},"timestamp":913815387},{"rating":1.0,"ratingsABC":{"movieId":2017,"userId":123},"timestamp":913815387},{"rating":1.0,"ratingsABC":{"movieId":2017,"userId":123},"timestamp":913815387}]';
var sortedData= JSON.parse(data).filter((a) => a.rating >= 4 );
这是不使用任何花哨的API:
var jsonArr = [
{"rating":3.0,"ratingsPK":{"movieId":2017,"userId":610},"timestamp":913815387},
{"rating":5.0,"ratingsPK":{"movieId":2017,"userId":654},"timestamp":959098930},
{"rating":4.0,"ratingsPK":{"movieId":2017,"userId":856},"timestamp":1059863336},
{"rating":2.0,"ratingsPK":{"movieId":2017,"userId":903},"timestamp":903628492},
{"rating":3.5,"ratingsPK":{"movieId":2017,"userId":1185},"timestamp":1100560205}];
var arr = [];
for(var x in jsonArr){
if(jsonArr[x]['rating'] > 4.0 ){
arr.push(jsonArr[x]['ratingsPK']['userId']);
arr.push(jsonArr[x]['ratingsPK']['movieId']);
arr.push(jsonArr[x]['rating']);
arr.push(jsonArr[x]['timestamp']);
}
}
console.log(arr);
您可以使用XMLHttpRequest
读取JSON
文件,该文件将作为字符串返回,并假设您将文件数据保存在变量中。 jsonFile
如下所示使用JSON.parse
。
var rating = JSON.parse(jsonFile);
以下是工作示例。
var rating = [ {"rating":3.0,"ratingsPK":{"movieId":2017,"userId":610},"timestamp":913815387}, {"rating":5.0,"ratingsPK":{"movieId":2017,"userId":654},"timestamp":959098930}, {"rating":4.0,"ratingsPK":{"movieId":2017,"userId":856},"timestamp":1059863336}, {"rating":2.0,"ratingsPK":{"movieId":2017,"userId":903},"timestamp":903628492}, {"rating":3.5,"ratingsPK":{"movieId":2017,"userId":1185},"timestamp":1100560205} ]; var bestRated = []; rating.forEach(function (item) { if(item.rating > 4) { bestRated.push({ userid: item.ratingsPK.userId, movieid: item.ratingsPK.movieId, rating: item.rating, timestamp: item.timestamp }); } }); console.log('bestRated: ', bestRated);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.