Verständnis JSON-Struktur - Attribute und Werte
Etwas stört mich. Ich habe JSON-in ein paar von meinen apps/websites, die wir alle lieben es! Aber etwas in meinen Kopf heute, das habe ich nie nachgedacht.. werfen Sie einen Blick auf das folgende Beispiel (aus http://json.org/example.html ):
{"widget": {
"debug": "on",
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500
},
"image": {
"src": "Images/Sun.png",
"name": "sun1",
"hOffset": 250,
"vOffset": 250,
"alignment": "center"
},
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity /100) * 90;"
}
}}
nun, wenn dies war ausgedrückt in XML: hätten wir das folgende:
<widget>
<debug>on</debug>
<window title="Sample Konfabulator Widget">
<name>main_window</name>
<width>500</width>
<height>500</height>
</window>
<image src="Images/Sun.png" name="sun1">
<hOffset>250</hOffset>
<vOffset>250</vOffset>
<alignment>center</alignment>
</image>
<text data="Click Here" size="36" style="bold">
<name>text1</name>
<hOffset>250</hOffset>
<vOffset>100</vOffset>
<alignment>center</alignment>
<onMouseUp>
sun1.opacity = (sun1.opacity /100) * 90;
</onMouseUp>
</text>
</widget>
Beim Blick auf JSON zu XML-transformation Frage ich mich, ob es irgendeinen Weg gibt, dass Sie unterscheiden können, ob ein paar ("Schlüssel":"Wert") sind ein Attribut eines Tags. Zum Beispiel im JSON-oben
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
Titel wird dargestellt als ein Attribut des Fensters tag während der name ist ein tag, in einem eigenen Recht, jedoch ist dies nicht ausgedrückt, überall (dass ich sehen kann).
<window title="Sample Konfabulator Widget">
<name>main_window</name>
Warum das nicht angezeigt als:
<window>
<title>Sample Konfabulator Widget</title>
<name>main_window</name>
Ist Ihr eine Möglichkeit, ich kann angeben, ob ein paar sind ein Attribut der parent-tag oder ein untergeordnetes tag in Ihrem eigenen Recht? Sorry, wenn meine Formulierung ist schlecht oder wenn ich mir das nicht erklären, mich gut.
- Haben Sie ein XML-schema oder so etwas? Weder XML-noch JSON-weisen eine semantische Bedeutung, um Ihre Daten.
- Die häufigste convention sah ich in viele xml-to-json-Transformatoren ist, um die Attribute beginnend mit einem @ im json-Format. eg:
{"window": {"@title":...
- Das ist ein schöner Weg, es zu tun. Ich habe noch nie gesehen, aber dein einer Satz-Erklärung macht es klar, wie es funktionieren würde.
- Beachten Sie, dass in anderen Arten von XML hat mehr Einschränkungen als JSON, z.B. ein XML-tag-Namen können keine Leerzeichen (oder anderen Zeichen), sondern eine JSON-Schlüssel-name kann eine beliebige Unicode-Zeichen (mit nur ein paar vorbehaltlich der Flucht). So ignorieren das Attribut versus Kind-tag Thema, es gibt andere Dinge, die Sie finden können in JSON, die man nicht direkt darstellen im XML-Format.
- Ich fand das eher eyeopening webreflection.blogspot.com/2011/12/on-json-comments.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einige Menschen neigen dazu zu nutzen, eine regelmäßige Eigenschaft mit dem Namen "@Attribute", so dass es die Besondere Bedeutung des "container Attribute", aber der name hat keine Besondere Bedeutung für das JSON-Spezifikationen selbst.
Antwort auf deine Frage, es gibt keine Möglichkeit zu unterscheiden, zwischen Paaren "Schlüssel":"Wert" und die Attribute, einfach, weil json nicht unterstützt Attribute.
Diese Art der Frage kommt in der Regel von Menschen, die vergessen, dass das M in der XML steht für "markup", das ist ein Weg, der Einnahme von text und das hinzufügen von markup zu erstellen strukturierter text.
Ich denke mal, dass das Missverständnis kamen aus der Förderung von JSON als eine Fett-freie alternative zu XML, während in Wirklichkeit XML ist eine markup-Sprache, und JSON ist ein Datenaustauschformat. Niemand ist wirklich eine alternative zu den anderen.
Den gemischten Inhalt ist ein von den Kontexten, in denen XML-zeigt seine macht.
Auszudrücken versuchen, dass als JSON, werden Sie feststellen, dass es nicht für die Aufgabe.
Auf der anderen Seite XML kann sehr nützlich sein Daten interchanger, aber das ist nicht das, was es für entworfen wurde oder wo es stärken sind.
Es kommt auf den Konverter.
Json nicht mit XML 1-1.
Einfach ausgedrückt, json ist nur eine Möglichkeit dar dictionaries und arrays mutally verschachtelt.
Nicht in JSON. Ich nehme an, du hast einige Art von Art automatisches konvertieren von XML in JSON; je nach Programm, die macht der transformation kann es Anmerkungen, die Sie verwenden können. Siehe auch zB. http://en.wikipedia.org/wiki/JSON gibt zwei XML-Beispiele für die gleichen JSON.
Es gibt keine formale Spezifikation (die ich kenne), wie Sie sind "soll" anzeigen JSON zu XML. Beide sind formalisierte, strukturierte Möglichkeiten, um Daten darzustellen, aber lassen Sie die Beton-Teile, wie Sie die Daten darstellen, die bis zu Ihnen. Also es hängt davon ab, wie Sie wollen, die Daten darstellen, und was Ihre Anwendung kann oder nicht umgehen können.
Einige Konverter sind mit einigen Standard-Schlagworte wie "Titel" und " src " werden umgewandelt als ein Attribut anstelle eines Feldes. Einige Konverter nicht.
Gerade lese ich genau dieses Beispiel für json-website und dachte: "wie auf der Erde ist der Titel ein Attribut gibt es nichts zu erklären es sollte. Ich würde vermuten, dass das Beispiel selbst ist nicht falsch, aber ich weiß nicht, warum jemand noch nicht angeboten eine einfache Antwort?
Ich denke, das ist eine (etwas) behandelt in diesem 'Titel' und 'Beschreibung' und 'default') sind als Stichworte in JSON. JSON nicht wirklich umgehen Attribute, die Art und Weise. Ich denke, der einzige Weg, es zu tun wäre, um noch eine hinzuzufügen kapselndes Objekt, genau zu trennen, 'Titel' von den anderen Einträgen. Ich denke, JSON die Mühe zu machen, 'Titel' und 'Beschreibung' - special ist eine Anstrengung, um damit umzugehen. (Nicht eine wunderbare Antwort, ich weiß....)
https://spacetelescope.github.io/understanding-json-schema/reference/generic.html
Das Objekt "Titel" in "widget/Fenster" generiert, in ein neues element. Es wird nie in ein Attribut eines anderen Elementes. Sehr sicher dazu.