2012-06-05 27 views
14

yazmak için nasıl json okuyorum ve bu nested.I yazdığı bir çok boyutlu bir json nesnesi yazmak için doğru yolu olup olmadığını ben merak ediyorum:yuvalanmış çok boyutlu json nesnesi

var foo = { 
    "logged_in":true, 
    "town":"Dublin", 
    "state":"Ohio", 
    "country":"USA", 
    "products":2, 
    "0":{ 
     "pic_id":"1500", 
     "description":"Picture of a computer", 
     "localion":"img.cloudimages.us/2012/06/02/computer.jpg", 
     "type":"jpg", 
     "childrenimages":2 

     "0":{ 
     "pic_id":"15011", 
     "description":"Picture of a cpu", 
     "localion":"img.cloudimages.us/2012/06/02/mycpu.png", 
     "type":"png" 
      } 
     "1":{ 
     "pic_id":"15012", 
     "description":"Picture of a cpu two", 
     "localion":"img.cloudimages.us/2012/06/02/thiscpu.png", 
     "type":"png" 
      } 
    }, 
    "1":{ 
     "pic_id":"1501", 
     "description":"Picture of a cpu", 
     "localion":"img.cloudimages.us/2012/06/02/cpu.png", 
     "type":"png" 
    } 
}; 

bu doğru mu ya da nesneyim çok iç içe geçtiyse, izlemem gereken bir kongre var mı?

+1

Sen, adını bir dize değeri ... –

+0

onunla çıkacağını Bir dizide nesneleri temsil etmek "0" ve "1" demekse tutan ima bir değişkene bir nesne değeri atıyorsanız biz dizi notasyonu '[]' ve "0" ya da "1" belirtme. Bir şey gibi https://gist.github.com/2875889 Not, yazdığınız ile çok az sorun var, aşağıda verilen noktanın altını çiziyor .... JSON yazmayın. –

+0

Gist için James'e teşekkürler. – Gandalf

cevap

19

Numaralandırılmış nesne yerine dizileri kullanmayı düşünün. json içinde

Diziler Burada http://www.json.org/

bir örnek [] kullanılarak tanımlanmaktadır:

var foo = { 
    "logged_in":true, 
    "town":"Dublin", 
    "state":"Ohio", 
    "country":"USA", 
    "products": 
    [ 
     { 
      "pic_id":"1500", 
      "description":"Picture of a computer", 
      "localion":"img.cloudimages.us/2012/06/02/computer.jpg", 
      "type":"jpg", 
      "childrenimages": 
      [ 
       { 
        "pic_id":"15011", 
        "description":"Picture of a cpu", 
        "localion":"img.cloudimages.us/2012/06/02/mycpu.png", 
        "type":"png" 
       }, 
       { 
        "pic_id":"15012", 
        "description":"Picture of a cpu two", 
        "localion":"img.cloudimages.us/2012/06/02/thiscpu.png", 
        "type":"png" 
       } 
      ] 
     }, 
     { 
      "pic_id":"1501", 
      "description":"Picture of a cpu", 
      "localion":"img.cloudimages.us/2012/06/02/cpu.png", 
      "type":"png" 
     } 
    ], 
}; 

(Ya kapatma {veya unuttuysanız beni affet [veya onun kodu yazmak için oldukça zor SO: p)

bile yok Bu şekilde

"products":2, 
gibi sayar olması gerekir

veya

"childrenimages":2 

Sadece

foo.products.length 

veya

do
foo.products[0].childrenimages.length 

İyi şanslar :)

+1

Aslında, nesne özellik adlarının anlamsız olması nedeniyle sayısal dizinleri kullanan bir akıl önerisi. –

-1

JSON yazmayın. Ciddi olarak, basit yapılandırma dosyaları haricinde JSON yazmayın.

Nesneleri çoğu dilde (yoksa) bir JSON dizesine dönüştürmek için yardımcı programlarınız vardır.

PHP: json_encode($array);

JavaScript: JSON.stringify(obj);

Vb

Yazma JSON elle genellikle söz dizimi hatalarına yol açar. Eksik virgül veya w/e görene kadar size baş ağrısı veren tür. Bunu yapmak için iyi araçlara sahipsiniz, bunları kullanın. XML ile karşılaştırabilirsiniz, ancak JSON yazarken "Bu sözdizimi yanlış" diyerek hiçbir aracı (IDE, metin editörü) yoktur. Örneğin, hiçbir editör size, bir çift yerine tek bir alıntı kullandığını söyleyecektir.

Sadece JSON yazmayın.

+1

JSON yazılmasına karşı ifadeleriniz nelerdir? Cevabında hiçbir şey göremiyorum. –

+0

JSON'u elle yazmanız çoğu dil tarafından sağlanan yöntemleri kullanırsanız genellikle gerçekleşmeyen hatalara neden olur. Onlardan kaçınmak için neden bu tür bir riski riske atıyorsunuz? –

+0

@skwee emin misiniz? o langauge bir yerli nesne oluşturmak ve daha sonra json dışarı dizginlemek için önerir: P Yani yani ne yapıyorsun JSON yazıyor YAĞLAR VE ERROS – ShrekOverflow

0

İşte bu da nesneleri olan özelliklere içeren sadece bir obje, aslında var orada bir dizi değil

{ 
    "logged_in":true, 
    "town":"Dublin", 
    "state":"Ohio", 
    "country":"USA", 
    "products":2, 
    "productinfo":[ 
     { 
      "0":{ 
       "pic_id":"1500", 
       "description":"Picture of a computer", 
       "localion":"img.cloudimages.us/2012/06/02/computer.jpg", 
       "type":"jpg", 
       "childrenimages":2 
      }, 
      "1":{ 
       "pic_id":"15011", 
       "description":"Picture of a cpu", 
       "localion":"img.cloudimages.us/2012/06/02/mycpu.png", 
       "type":"png" 
      }, 
      "2":{ 
       "pic_id":"15012", 
       "description":"Picture of a cpu two", 
       "localion":"img.cloudimages.us/2012/06/02/thiscpu.png", 
       "type":"png" 
      }, 
      "3":{ 
       "pic_id":"1501", 
       "description":"Picture of a cpu", 
       "localion":"img.cloudimages.us/2012/06/02/cpu.png", 
       "type":"png" 
      } 
     } 
    ] 
} 
0

(i bazı veriler kendisi değişmiş edin) verileriniz için uygun biçimdir. Ayrıca birkaç virgüyü de kaçırıyorsunuz, bu yüzden derleme bile yapılmıyor.

Bu durumda sizin için daha uygun olan şey, JSON'unuzu oluşturmak için hem dizileri hem de nesneleri kullanmaktır.Örneğin:

var this_json_string = { 
    "state":"Ohio", 
    "country":"USA", 
    "products":[ 
     { 
      "pic_id":"1500", 
      "description":"Picture of a computer", 
     }, 

     { 
      "pic_id":"15011", 
      "description":"Picture of a cpu" 
     }, 
     { 
      "pic_id":"15012", 
      "description":"Picture of a cpu two" 
     }, 
     { 
      "pic_id":"1501", 
      "description":"Picture of a cpu" 
     } 
    ] 
};