簡體   English   中英

將多維對象數組轉換為JSON

[英]Converting multidimensional object array to JSON

我有一個要轉換為JSON字符串的對象數組,但是我收到以下錯誤: JavaScript exception :Uncaught TypeError: Converting circular structure to JSON

據我了解,這是因為引用中存在循環。 我在此處搜索解決方案,有人想出了“替換功能”。 看起來像這樣:

var cache = [];
    JSON.stringify(o, function(key, value) {
        if (typeof value === 'object' && value !== null) {
            if (cache.indexOf(value) !== -1) {
                // Circular reference found, discard key
                return;
            }
            // Store value in our collection
            cache.push(value);
        }
        return value;
    });
    cache = null; // Enable garbage collection

但是使用它會給我以下錯誤: Maximum call stack size exceeded

我認為此解決方案並不完全符合我的需求,因為我對嘗試轉換的數組的所有元素都不感興趣。 這些元素被添加為第三方(谷歌地圖),所以我對其子對象沒有影響。

這是我的數組對象的屏幕截圖:

在此處輸入圖片說明

我只對以下項目感興趣:

Tour
  -id
  -name
  -days :
      -id
      -name
      -markers :
          -dayId
          -title
          -position :
              -nb
              -ob
      -thumbs :
         - 0
         - 1
         - ...

因為對象數組是由幾個功能/服務/工廠創建的,所以很難擺弄東西或提供一些代碼示例。

歡迎任何建議如何將這樣的數組轉換為JSON,謝謝

對於任何有興趣的人,我最終只用我需要的元素制作自己的數組:

function CreateJson(tour){
    var sJson = {};

    sJson.name = tour.name;
    sJson.id = tour.id;
    sJson.days = [];
    sJson.markers = [];
    sJson.thumbs = [];

    for(i = 0; i < tour.days.length; i++){
        sJson.days.push({
            id: tour.days[i].id,
            name: tour.days[i].name
        });
        for(j = 0; j < tour.days[i].markers.length; j++){
            sJson.markers.push({
                id: tour.days[i].markers[j].id,
                dayId: tour.days[i].markers[j].dayId,
                name: tour.days[i].markers[j].title
            });
        }
        for(k = 0; k < $scope.thumbs.length; k++){
            sJson.thumbs.push($scope.thumbs[k])
        }
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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