Tengo la tarea de definir la comunicación entre dos aplicaciones web. Decidí usar JSON para esto. ¿Qué tan común es tener un nodo raíz en el JSON?Root Nodes en JSON
Digamos que tenemos un objeto de automóvil. Este es el JSON con "coche" es el nodo raíz:
{"Car": {
"Make":"Mustang",
"YearBuilt":"1999"}}
Así que ahora vamos a decir que tienen un objeto de Tiro y ya que estamos estandarizando en que tienen nodos raíz, éste también tiene que tener.
{"Tire": {"Make": "Brirdgestone", "Size":"15"}}
La integración del objeto de neumático JSON en el objeto original del automóvil muestra lo difícil que puede ser.
{"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"}}
]}}
Así serializado en PHP, la marca del primer neumático sería $object->Car->Tires[0]->Tire->Make
. Hay ese nivel de neumático extra allí debido al nodo raíz.
Si Tire no tenía el nodo raíz, el código podría ser mucho más delgado.
{"Car": { "Make":"Mustang",
"YearBuilt":"1999",
"Tires": "[{ {"Make": "Bridgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}}]}}
En PHP, hay menos confusión porque hay menos redundancia: La marca del primer neumático es llamado por $object->Car->Tires[0]->Make
¿Hay algo mal por no tener un nodo raíz? Me gusta tener el nodo raíz porque actúa como un nombre de clase, pero los niveles innecesarios me molestan mucho y hacen que el recorrido sea más complejo.
Estoy de acuerdo. Los nodos de raíz simplemente harían innecesariamente detallado el código de la aplicación de consumo. – Steve
Genial, muchas gracias. Pensé en un área donde sería importante. Si el JSON duplica y el documento XML, debe agregar uno al menos en el objeto principal porque en XML, necesita un elemento raíz. Un colega también señaló que es importante para las devoluciones de llamada JSONP y sería una mejor estructura si estuviera creando una API. Por ejemplo, las API de Yahoo y eBay envuelven todo alrededor de un nodo ResultSet. Esto permite a los analizadores que se preocupan por los tipos vincular el ResultSet a un tipo de objeto. –
Bueno, estoy seguro de que puedes pensar en UseCases donde podría ser útil, pero de nuevo, cada vez que utilizaba JSON en mis aplicaciones, tenía devoluciones de llamada que sabían cómo manejar los datos que recibían, p. example.com/cars/find/id/123 devolvería los datos del automóvil y mi devolución de llamada los crearía. – Gordon