JSON Kök düğümler

2 Cevap php

Ben iki web uygulamaları arasındaki iletişimi tanımlamakla görevli değilim. Bunun için JSON kullanmaya karar verdik. Bu JSON bir kök düğüm olması için ne kadar yaygındır?

Adlı bir araba nesnesi var diyelim. Bu "Araba" kök düğümü olmak JSON:

{"Car": { 
  "Make":"Mustang", 
  "YearBuilt":"1999"}}

Yani şimdi ben bir Lastik nesnesi var diyelim ve biz kök düğüme sahip standartlaştırılması beri, bu da ona sahip olmak vardır.

{"Tire": {"Make": "Brirdgestone", "Size":"15"}}

Orijinal Araba nesnesine lastik nesne JSON entegre bunun nasıl olabileceğini hantal gösterir.

{"Car": { "Make":"Mustang", 
"YearBuilt":"1999",
"Tires": "[{"Tire": {"Make": "Brirdgestone", "Size":"15"}},
{"Tire": {"Make": "Brirdgestone", "Size":"15"}},
{"Tire": {"Make": "Bridgestone", "Size":"15"}},
{"Tire": {"Make": "Brirdgestone", "Size":"15"}}
]}}

Yani PHP tefrika, ilk Tire markası olacak $object->Car->Tires[0]->Tire->Make. Bu ekstra Lastik seviyesi nedeniyle kök düğümün orada.

Lastik kök düğümünü yoktu eğer kod çok ince olabilir.

{"Car": { "Make":"Mustang", 
"YearBuilt":"1999",
"Tires": "[{ {"Make": "Bridgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}}]}}

Az fazlalık var çünkü PHP, daha az karışıklık var: İlk lastiğin markası $object->Car->Tires[0]->Make tarafından denir

Bir kök düğüm kalmadan kötü bir şey var mı? O görür, çünkü ben kök düğüm olması gibi bir sınıf adını seviyor, ama gereksiz seviyeleri hata beni çok ve daha karmaşık geçme yapacaktır.

2 Cevap

Ben hem kök düğümler atlarsanız, Tire ve Car. Istiyorum

Json birincil kullanımı, kompakt bir biçimde ağ üzerinden nesneleri aktarmak olduğunu aklınızda tutun. Bu yanında gerçek bir diğer kullanımı yoktur. Sen veriler JSON kodlar ile çalışmak istiyorum ve kök düğümler ekleyerek, hiçbir gerçek kimlik ve amaç ile boş konteyner nesneleri yaratıyor. Kök düğümler omiting zaman, olsun

$car->tires[0]->make

ve JS olsun istiyorum

car.tires[0].make

Bu çok daha net ve nesne çok daha iyi temsil eder. Unutmayın, bu sizinle çalışmak zorunda olacak budur. Tabii, nesneleri seri hale nasıl olmalıdır eşler JSON eşleştiricisindeki çeşit ve yukarıdaki nesneleri bu sonuç kullanabilirsiniz, ama bu ekstra çaba ve imho buna değer değil bir sürü.

Eğer JSON sınıf adı olmasını istiyorsanız, sadece bir özellik, örneğin yapmak

{ 'klass': 'Car', 'make': 'Mustang', 'year':1999 }

@ Gordon iyi puan yapar. Ancak, sunucu ve gelen mesajları yakalamak için AJAX mesajları AOP'yi kullanmak ister. Bu önleyicilerin her iletiye bir zaman damgası eklemek ve sunucudan bir durum bayrağı (, istisna, başarı başarısız neyse ...) gönderilen iletilerde. Büyük olasılıkla tahmin edebilmiş gibi, ben yükü, durum ve zaman damgası için bir kök JSON düğümünü kullanın koydu.

Sunucudan gönderilen durum bayrağı ön ucunda bir fonksiyonu (boy) incelenebilir ve tüm istisnalar bir yerde ele. Sunucu bir istisna dışında bir sebeple başarısız olduğunda, boy / tavsiyem veri AJAX başlatıcı geçirilen sağlar.