Coś mnie dręczy. Użyłem JSON w kilku moich aplikacjach/stronach internetowych, wszyscy to uwielbiamy! Jednak coś weszło głowę dzisiaj który nigdy nie myślał o .. spojrzeć na poniższym przykładzie (ten pochodzi z http://json.org/example.html):Zrozumienie struktury JSON - atrybuty i wartości
{"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;"
}
}}
teraz jeśli ta została wyrażona jako XML: musielibyśmy następujący :
<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>
patrząc na JSON do przekształcenia XML Zastanawiam się, czy istnieje jakikolwiek sposób, że można rozróżnić, czy para („klucz”: „wartość”) stanowią atrybut znacznika. Na przykład, w naszym JSON powyżej
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
tytułem jest reprezentowany jako atrybut znacznika okna podczas gdy nazwa jest tag w jego własnym prawem, jednak nie jest to wyrażone w dowolnym miejscu (to widzę).
<window title="Sample Konfabulator Widget">
<name>main_window</name>
Dlaczego nie jest to wyświetlany jako:
<window>
<title>Sample Konfabulator Widget</title>
<name>main_window</name>
jest ich sposób mogę określić, czy para jest atrybutem znacznika macierzystego lub znacznik dzieci w ich własnym prawem? Przepraszam, jeśli moje sformułowanie jest złe lub nie wyjaśniam się dobrze.
Czy masz schemat XML lub coś? Ani XML, ani JSON nie przypisują twojemu danym semantycznego znaczenia. –
Najpopularniejszą konwencją, jaką widziałem w wielu transformatorach xml-json jest uzyskanie atrybutów zaczynających się od @ w jsonie. eg: '{" window ": {" @title ": ...' – Mic
@Mic - To dobry sposób na zrobienie tego. Nigdy wcześniej tego nie widziałem, ale twoje jedno zdanie wyjaśnia, jak to działa. – nnnnnn