JSON dizeleri nasıl temsil ediyorsunuz?


184

Geçerli JSON için ihtiyacınız olan her şey bu, değil mi?

["somestring1", "somestring2"]

6
Bu iki dize içeren bir JSON dizisi, evet ... bu sorudan daha fazlası var mı? ;)
Kasaba

Hepimiz üzerinde anlaştığımız şeyle çelişen bir şey okudum. Yani, gerçekliğin orada kontrol edilmesini istedim. Teşekkürler!
finneycanhelp

4
Ah, anlıyorum! Kendi sorunuzu cevap olarak kabul edemeyeceğiniz bir utanç: D
Kasaba

:) Eh, sadece eğlenceli cevaplar değil. Bu siteyi eğlenceli bir başarıya dönüştürmeye yardımcı olan kendiniz gibi harika insanlar!
finneycanhelp

Yanıtlar:


299

ChrisR harika cevabını biraz daha ayrıntılandıracağım ve müthiş referansından görüntüler getireceğim .

Geçerli bir JSON her zaman kıvırcık parantez {veya köşeli parantez ile başlar [, başka bir şey değildir.

{başlayacak object:

sol köşeli ayraç ve ardından bir anahtar dize (tırnak içinde tekrarlanamayan bir ad), iki nokta üst üste ve bir değer (aşağıda gösterilen geçerli türler), ardından isteğe bağlı olarak daha fazla dize ve değer çifti eklemek ve isteğe bağlı bir virgül eklemek doğru bir destek

{ "key": value, "another key": value }

İpucu : javascript tek tırnak kabul etse de 'JSON yalnızca çift tırnak alır ".

[başlayacak array:

sol köşeli parantez ve ardından değer, isteğe bağlı daha fazla değer eklemek için virgül ve sağ köşeli parantezle bitmiş

[value, value]

İpucu : öğeler arasındaki boşluklar herhangi bir JSON ayrıştırıcısı tarafından her zaman yoksayılır.

Ve valuebir object, array, string, number, boolveya null:

JSON değeri olabilen 6 türü gösteren resim: string, number, JSON nesnesi, Array / list, boolean ve null

Yani evet, ["a", "b"]tam olarak geçerli bir JSON, Manish'in işaret ettiği bağlantıyı deneyebileceğiniz gibi .

Aşağıda, blok başına bir tane olmak üzere birkaç geçerli JSON örneği daha verilmiştir:

{}

[0]

{"__comment": "json doesn't accept comments and you should not be commenting even in this way", "avoid!": "also, never add more than one key per line, like this"}

[{   "why":null} ]

{
  "not true": [0, false],
  "true": true,
  "not null": [0, 1, false, true, {
    "obj": null
  }, "a string"]
}

22
Çok Harika UI Temsilciliği
Shridutt Kothari

JSON'un çift tırnak olması gerekiyor mu? Yukarıdaki OP dizesini doğrulamaya çalıştım ama jsonlint.com tek tırnak ile ve bunun geçersiz olduğunu söylüyor. Ancak çift tırnak kullanılırken geçerlidir.
Ray

@ Her zamanki gibi, bu basit bir evet ya da hayır cevabı yok, ancak çoğunlukla "evet, sadece çift tırnak ile gitmek" diyebilirim. json.org bize sadece çift tırnak kullanmaktan bahseder ve çoğu yer muhtemelen bunu izler. Ancak, bu konuda daha derin bir araştırma: stackoverflow.com/a/2275428/274502
cregox

61

Bu durumda JSON nesneniz bir listedir. JSON neredeyse her zaman nitelikleri olan bir nesnedir; bir veya daha fazla anahtar kümesi: değer çifti, böylece büyük olasılıkla bir sözlük görürsünüz:

{ "MyStringArray" : ["somestring1", "somestring2"] }

sonra değerini isteyebilir "MyStringArray"ve iki dizenin bir listesini geri alırsınız "somestring1"ve "somestring2".


12
Gönderdiğiniz kod örneği geçersiz, bu dizeyi json olarak ayrıştırmaya çalıştığınızda bir hata / istisna atar. JSON'un her zaman anahtar / değer çiftleri olduğunu söylemeniz de doğal olarak yanlıştır. JSON spesifikasyonundaki hiçbir şey anahtar / değer çiftlerine ihtiyacınız olmadığını söylemiyor. Veri taşıma hakkında konuşurken aslında anahtar / değer çiftleri en kullanışlı yapısı vardır ama OP yayınlanmıştır dize tamamen geçerli JSON geçerli: codebeautify.org/jsonviewer/92ac7b
ChrisR

1
Ben bir anahtar dayalı bir dizideki değeri aramak istediğiniz beyin, API vardı. Bu, adlandırılmamış bir dizi için {"1": "somestring1", "2": "somestring2"}
PapaSmurf

41

Temel olarak evet, JSON sadece değerinizin javascript gerçek bir temsilidir, böylece söyledikleriniz doğrudur.

Http://json.org/ adresinde JSON gösterimi hakkında oldukça açık ve iyi bir açıklama bulabilirsiniz.


5
String strJson="{\"Employee\":
[{\"id\":\"101\",\"name\":\"Pushkar\",\"salary\":\"5000\"},
{\"id\":\"102\",\"name\":\"Rahul\",\"salary\":\"4000\"},
{\"id\":\"103\",\"name\":\"tanveer\",\"salary\":\"56678\"}]}";

Bu, Employeenesne olarak bir JSON dizesi örneğidir , sonra bir dizideki birden çok dizeyi ve değeri @cregox...

Biraz karmaşık ama tek bir JSON dizesinde çok şey açıklayabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.