Skip to content

Instantly share code, notes, and snippets.

@bpanulla
Created September 26, 2017 23:58
Show Gist options
  • Save bpanulla/aaeedbf11b36290774eec50b3837fa10 to your computer and use it in GitHub Desktop.
Save bpanulla/aaeedbf11b36290774eec50b3837fa10 to your computer and use it in GitHub Desktop.
How to preserve order of elements in JSON with arrays
/* what it might have looked like in XML */
<types>
<foo>
<category name="A">
<item name="A1" />
<item name="A2" />
</catgory>
<category name="B">
<item name="B1" />
<item name="B2" />
</catgory>
<category name="C">
<item name="C1" />
<item name="C2" />
</catgory>
<category name="D">
<item name="D1" />
<item name="D2" />
</catgory>
</foo>
<bar>
<category name="X">
<item name="X1" />
<item name="X2" />
</catgory>
<category name="Y">
<item name="Y1" />
<item name="Y2" />
</catgory>
</bar>
</types>
/* What you might be tempted to do */
{
"foo": {
"A": {
"A1": {},
"A2": {},
},
"B": {
"B1": {},
"B2": {},
},
"C": {
"C1": {},
"C2": {},
},
"D": {
"D1": {},
"D2": {},
},
},
"bar": {
"X": {
"X1": {},
"X2": {},
},
"Y": {
"Y1": {},
"Y2": {},
}
}
}
/* what you really need */
{
"types": [
{
"name": "foo",
"categories": [
{
"name": "A",
"items": [
{"name": "A1", "value": {}},
{"name": "A2", "value": {}},
]
},
{
"name": "B",
"items": [
{"name": "B1", "value": {}},
{"name": "B2", "value": {}},
]
},
{
"name": "C",
"items": [
{"name": "C1", "value": {}},
{"name": "C2", "value": {}},
]
},
{
"name": "D",
"items": [
{"name": "D1", "value": {}},
{"name": "D2", "value": {}},
]
}
]
},
{
"name": "bar",
"categories": [
{
"name": "X",
"items": [
{"name": "X1", "value": {}},
{"name": "X2", "value": {}},
]
},
{
"name": "Y",
"items": [
{"name": "Y1", "value": {}},
{"name": "Y2", "value": {}},
]
}
]
},
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment