Le parentesi graffe vengono solitamente utilizzate per indicare l'inizio e la fine di un blocco. Non c'è semantica dietro la coppia, di solito viene catturata da altri simboli vicini come while
, if
, ecc ... tag come <foo></foo>
indicano l'inizio e la fine del blocco e cattura la semantica.
Suppongo che tu possa modificare il markup basato su tag da
<ns:foo attrib="test" attrib2="123/>
some values and nested elements can go here
</ns:foo>
a:
ns:foo(attrib="test" attrib2="123")
{
some values and nested elements can go here
}
che contiene ancora la semantica del primo esempio (sappiamo che abbiamo a che fare con un elemento foo
dallo spazio dei nomi ns
e abbiamo i valori degli attributi dell'elemento) ma in un formato diverso.
Perché il markup è fatto con i tag è il massimo che posso dire per rendere più facile la lettura da parte degli umani. Scansionando una sequenza di chiusura di }
con gli occhi, è facile perdersi su quale elemento viene chiuso. I fantasiosi editor che evidenziano e tengono traccia dell'elemento in cui si trova il cursore possono essere d'aiuto, ma non è sempre possibile mantenere questo valore (ad esempio quando si aggiusta un file di configurazione XML su un server remoto utilizzando pico).
Fondamentalmente, questo:
</bar>
</foo>
</fizz>
</bang>
È più facile da leggere rispetto a:
}
}
}
}
Ho visto XML con elementi nidificati > 10 livelli di profondità (molto più spesso di quanto abbia mai visto il codice annidato in quel modo), e quando si lavora con questi file, sapere quali elementi vengono chiusi aiuta davvero.
In risposta all'aggiornamento della domanda:
Non sono un esperto JSON ma un rapido google mi ha mostrato alcuni esempi. Le coppie chiave-valore di JSON sembrano un'alternativa migliore agli articoli a valore singolo, come <foo>some value</foo>
, ma penso ancora che per gli oggetti profondamente annidati, il problema di non sapere dove ti trovi sullo schermo sia mitigato dall'avere i tag di chiusura.
Una combinazione ideale, teortica e fuori dalla testa, basata su un esempio di wikipedia:
<person>
"firstName": "John",
"lastName": "Smith",
"age": 25,
<address>
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
</address>
<phoneNumbers>
<phoneNumber>
"type": "home",
"number": "212 555-1234"
</phoneNumber>,
<phoneNumber>
"type": "fax",
"number": "646 555-4567"
</phoneNumber>
</phoneNumber>
</person>
Naturalmente, avremmo potuto fare la maggior parte di quelle coppie chiave-valore come attributi, come ad esempio:
<person firstName="John"
lastName="Smith"
age="25">
<address
streetAddress="21 2nd Street ...>
...
</person>
Penso che sarebbe più pulito della maggior parte della sintassi JSON, e semplici elementi potrebbero essere fatti come
<foo value="some value"/>