簡體   English   中英

將二維javascript數組轉換為JSON

[英]converting a two dimensional javascript array to JSON

我已經嘗試了幾種不同的json方法(stringify,toJSON,以及出於絕望而可能有些完全不相關的其他方法),但似乎無法弄清楚如何對此進行字符串化,因此我可以將其傳遞給php腳本。 我能夠創建一個二維數組,該數組可以表示如下:

array(
    'image'=>array(
        0=>'hello.jpeg', 
        1=>'goodbye.jpeg', 
        2=>'etc.jpeg'),
    'resume'=>array(
        0=>'resume.doc'),
    'reel'=>array(
        0=>'reel.mov')
    )

當我使用此轉儲功能將其打印到控制台時,該陣列看起來還可以。 我試圖弄清楚如何使它與對象一起使用,因為我以為我讀到一些東西說對象已經是JSON友好的了,但是由於我對javascript不太熟悉,因此我幾乎陷入困境。

編輯:更多詳細信息...我的數組的聲明(當我有它的工作時)是這樣的,盡管我可能搞砸了:

var fileArray = [];
fileArray['image'] = [];
fileArray['resume'] = [];
fileArray['reel'] = [];

var type;
var name;

var divs = $("#upload-container").children('div');

$.each(divs, function() {
    type = $(this).attr('id');
    name = $(this).html();

    fileArray[type].push(name);
});

該數組結構的對象在JavaScript中可能如下所示:

var objects = 
[
    {
        'image': [
            { '0': 'hello.jpeg' },
            { '1': 'goodbye.jpeg' },
            { '2': 'etc.jpeg' }
        ]
    },
    {
        'resume': [
            { '0': 'resume.doc' }
        ]
    },
    {
        'reel': [
            { '0': 'reel.mov' }
        ]
    }
]

因此,現在您有了一個包含三個對象的數組,每個對象包含一個屬性(圖像,履歷,卷軸),該屬性是另一個對象數組,這些對象基本上具有key:value對( '0':'hello.jpeg' )。 也許您可以通過不使用索引來簡化它:

var objects = 
[
    {
        'image': [ 'hello.jpeg', 'goodbye.jpeg', 'etc.jpeg' ]
    },
    {
        'resume': [ 'resume.doc' ],
    },
    {
        'reel': [ 'reel.mov' ]
    }
]

然后,您可以使用JSON.stringify(objects)傳遞給您的PHP操作。

PHP方面的示例預期輸出具有包含數字數組的關聯數組。 JavaScript數組具有數字索引:如果要將字符串用作鍵,請使用普通對象而不是數組,因為JavaScript對象的作用類似於您從PHP想到的關聯數組。 相應的JavaScript對象應如下所示:

var fileArray = {
  'image' : [ 'hello.jpeg',
             'goodbye.jpeg',
             'etc.jpeg'],
  'resume' : [ 'resume.doc' ],
  'reel' : [ 'reel.mov' ]
};

在用方括號定義的數組中,暗含數字索引。 請注意, fileArray是用大括號而不是方括號定義的,因此不是數組(盡管其名稱)。 如果您想一次設置一個屬性,這仍然允許您使用fileArray['image'] = ...語法:

var fileArray = {}; // an object, not an array
fileArray['image'] = [];
fileArray['resume'] = [];
fileArray['reel'] = [];  

請注意,初始聲明中的大括號使它成為一個對象,但是仍然可以使用方括號語法訪問屬性。

您將fileArray定義為帶有方括號的JavaScript數組的方式仍然允許您添加基於字符串的鍵屬性,因為數組對象,但是JSON字符串化例程可能會忽略這些屬性,而只會序列化數字索引的屬性。

暫無
暫無

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

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