[英]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.