2012-08-27 18 views
4

我已經使用了一些JavaScript庫,我注意到,他們大多采取這種形式輸入:[{"foo": "bar", "12": "true"}]爲什麼使用JSON選擇JavaScript庫一個[{},{}]結構

json.org:

enter image description here

因此,我們在陣列中發送的對象。

所以我有一個問題的兩個部分:

第1部分: 爲什麼不只是將對象或數組,這似乎更簡單?

Part2: 什麼是用Php創建這樣的Json的最佳方式?

這是一種工作方法,但我發現它有點難看,因爲它沒有現成的用多維數組工作:

<?php 
$object[0] = array("foo" => "bar", 12 => true); 

$encoded_object = json_encode($object); 
?> 

輸出:

{"1": {"foo": "bar", "12": "true"}}

<?php $encoded = json_encode(array_values($object)); ?> 

輸出:

[{"foo": "bar", "12": "true"}]

+0

您發送一個對象數組,如果只有一個對象需要發送,那麼您可以發送一個對象。 – xdazz

+2

'array(array(「foo」=>「bar」,12 => true))' –

回答

9
  1. 因爲這是邏輯的方式如何傳遞多個對象。它可能作出有利於本:

    [{"foo" : "bar", "12" : "true"}, {"foo" : "baz", "12" : "false"}] 
    
  2. 使用相同的邏輯結構,PHP:

    echo json_encode(array(array("foo" => "bar", "12" => "true"))); 
    
+0

感謝您的回答! –

+1

作爲附錄,在處理以這種格式提供的JSON時,額外的好處是可以運行一個'for'循環,就像'for(....){tweet = tweets [i]; tweet_card = build_tweet(tweet); frag.appendChild(tweet_card); },突然之間,您的視圖邏輯非常緊湊,而且這一切都非常有意義,因爲您正在處理集合中傳遞的單個單元。如果使用明確命名的對象鍵(即:tweet1,tweet2或時間戳或其他任何東西,將隔離單個單元要困難得多)。這完全在於最終遊戲。 – Norguard

0

數組用作支持多個參數的便捷方式。在這種情況下,第一個參數是一個對象。

+0

沒有回答完整的問題。 –

+1

有兩個無關的問題。 –

0

問題一:

JSON只是表示對象的方式/或數組作爲字符串。如果你的數組或對象是一個字符串,那麼將它發送到不同的地方比如客戶端的瀏覽器要容易得多。不同的語言以不同的方式處理數組和對象。所以,如果你在php中有一個數組,那麼你不能直接發送給客戶端,因爲它的格式只有php能夠理解。這就是爲什麼JSON很有用。它是一種將數組或對象轉換爲許多不同語言理解的字符串的方法。

問題二:

要輸出像上述對象的數組,你可以這樣做:

<?php 
    //create a test array of objects 
    $testarray = array(); 
    $testarray[] = json_decode('{"type":"apple", "number":4, "price":5}'); 
    $testarray[] = json_decode('{"type":"orange", "number":3, "price":8}'); 
    $testarray[] = json_decode('{"type":"banana", "number":8, "price":3}'); 
    $testarray[] = json_decode('{"type":"coconut", "number":2, "price":9}'); 

    $arraycount = count($testarray); 


    echo("["); 

    $i = 1; 
    foreach($testarray as $object) 
    { 
     echo(json_encode($object)); 
     if($i !== $arraycount) 
     { 
      echo(","); 
     } 

     $i += 1; 
    } 

    echo("]"); 
?> 

這將需要對象的數組和循環他們。在我們循環它們之前,我們輸出開放方括號。

然後,對於數組中的每個對象,我們輸出它編碼爲JSON加每個之後的逗號。我們計算迭代的次數,以便在最後不輸出逗號。

+0

json_encode可以處理多維數組,但我不知道如何用它生成[{}]結構。 –

+0

@ALS編輯帖子。 – starbeamrainbowlabs

相關問題