I am trying to map a json data into map[string]interface{}
using reflect and recursion . The function works like expected but it is not mapping all the value when it comes to nested json.
I have this following json structure:
{
"r_id" : "123456",
"title" : "brand new restarant with changed name",
"address": {
"city": {
"id": "25",
"name": "Dhaka"
},
"postal":"1213"
},
"description" : "here are some new desciption ..."
}
I am trying to map this into string for field and interface for value where the string for field if it is a nested will be joined with a dot .
. for example mapping title
is map[title:brand new restarant with changed name]
but for city name
and id
it will be map[address.city.id:25 address.city.name:Dhaka]
I wrote this script.
My goal is to get key
and value
in a map where key for nested json will be a string like parent.child.child.child
which is a json path
and the value will be the value of the last child
Final output should be like this: map[address.city.id:25 address.city.name:Dhaka address.postal:1213 r_id:123456 title:brand new restarant with changed name descripton:here are some new desciption ...]
but it prints map[address.city.id:25 address.city.name:Dhaka r_id:123456 title:brand new restarant with changed name]
But not all string field like description
and state
of address
I guess I need to sort the type then run the recursive function?