簡體   English   中英

使用純Javascript將JSON轉換為Javascript數組

[英]Converting JSON to a Javascript array using pure Javascript

我有JSON文件的以下部分。 我需要使用純Javascript轉換為Javascript數組。 具體來說,我只需要有一個數組useridmovieidratingtimestamp才能用於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM