Skip to content

Instantly share code, notes, and snippets.

@houmanka
Created November 9, 2017 04:56
Show Gist options
  • Save houmanka/b758cd3fee76c3e50f3f3203d940b6d5 to your computer and use it in GitHub Desktop.
Save houmanka/b758cd3fee76c3e50f3f3203d940b6d5 to your computer and use it in GitHub Desktop.
JSON Convertor
I need to convert the first JSON to the second JSON and feed it to an API Endpoint.
I wanted to ask you guys to see if there is any module in Elixir or Phoenix beside poison can help me to achieve this?
Or should I call the Parents from DB, and then children until I get to the end of line, and create the JSON gradually?
I am using arbor for traversing the tree.
{
"data": [
{
"parent_id": null,
"reference": 9569,
"name": "Master",
},
{
"parent_id": 9570,
"reference": 9575,
"name": "gear1",
},
{
"parent_id": 9570,
"reference": 9576,
"name": "gear2",
},
{
"parent_id": 9570,
"reference": 9577,
"name": "gear3",
},
{
"parent_id": 9577,
"reference": 9579,
"name": "shaft2",
},
{
"parent_id": 9569,
"reference": 9570,
"name": "engine1",
},
{
"parent_id": 9577,
"reference": 9578,
"name": "shaft1",
},
{
"parent_id": 9569,
"reference": 9571,
"name": "engine2",
},
{
"parent_id": 9569,
"reference": 9572,
"name": "engine3",
},
{
"parent_id": 9569,
"reference": 9573,
"name": "engine4",
},
{
"parent_id": 9569,
"reference": 9574,
"name": "engine5",
}
]
}
Convert to
{
"data": [{
"name": "Master",
"reference": "9569",
"children": [{
"name": "engine1",
"reference": "9570",
"children": [{
"name": "gear1",
"reference": "9575",
"children": [{
"name": "Asset 12",
"reference": "12"
}]
},
{
"name": "gear2",
"reference": "9576",
"children": [{
"name": "Asset 13",
"reference": "13"
}]
},
{
"name": "gear3",
"reference": "9577",
"children": [{
"name": "shaft2",
"reference": "9579"
},
{
"name": "shaft1",
"reference": "9578"
}
]
}
]
}, {
"name": "engine2",
"reference": "9571"
},
{
"name": "engine3",
"reference": "9572"
},
{
"name": "engine4",
"reference": "9573"
},
{
"name": "engine4",
"reference": "9574"
}
]
}]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment