Hi,
I'm trying all the day and yesterday for two things:
1) I want to modify a lot of values from a JSON object in Python with the following structure:
If for example appears:
"mode":"Spring",
It should be like that:
"Spring",
But I tried a lot an nothing, because I don't know to do this recursively or I don't know :/. I tried acummulating with json.loads(jsonobject)["Moderators"]["temperature"]["season"] and so on, but just I'm getting one, not all of the attributes 😐.
And the another part, is replace quality atributes like speed and manage, I want to put my own values, like:
"quality"{
"speed":"fast",
"manage":"xxxxf"
}
I want replace like:
"quantity"{
"quantity1":["xxxx","dddd","zzz"],
"quantity2":["xxxx","dddd","zzz"],
},
It's for all that appears "quality".
Thank you and sorry for the format of all, I'm with mobile data!
EDIT: Following is the real JSON example(with the JSON that I have the problem):
"quality"{
"speed":"fast",
"manage":"xxxxf"
}
I want replace like:
"quantity": [{
"quantity1":["xxxx","dddd","zzz"],
"quantity2":["xxxx","dddd","zzz"]
]},
My python code:
Expected JSON:
I'm trying all the day and yesterday for two things:
1) I want to modify a lot of values from a JSON object in Python with the following structure:
{
"Moderators":{
...
"something"{...
},
"temperature"{
"season":{
"mode": "Spring",
"quality"{
"speed":"fast"
"manage":"xxxxf"
},
"season":{
"mode": "Spring",
"quality"{
"speed":"fast"
"manage":"xxxxf"
},
"season":[
{
"mode":"Spring",
"quality"{
"speed":"fast"
"manage":"xxxxf"
},
{
"mode":"Spring",
"speed":"fast"
"manage":"xxxxf"
}
]
},
{
"mode":"Cold"
"quality"{
"speed":"fast"
"manage":"xxxxf"
},
{
"mode":"Spring"
"quality"{
"speed":"fast"
"manage":"xxxxf"
}
]
},
}
}And you can see that "mode" is always in the json(obviously, there are more keys inside of that but for the example I think that is good). I need to put thr value of mode and replace in the mode key:If for example appears:
"mode":"Spring",
It should be like that:
"Spring",
But I tried a lot an nothing, because I don't know to do this recursively or I don't know :/. I tried acummulating with json.loads(jsonobject)["Moderators"]["temperature"]["season"] and so on, but just I'm getting one, not all of the attributes 😐.
And the another part, is replace quality atributes like speed and manage, I want to put my own values, like:
"quality"{
"speed":"fast",
"manage":"xxxxf"
}
I want replace like:
"quantity"{
"quantity1":["xxxx","dddd","zzz"],
"quantity2":["xxxx","dddd","zzz"],
},
It's for all that appears "quality".
Thank you and sorry for the format of all, I'm with mobile data!
EDIT: Following is the real JSON example(with the JSON that I have the problem):
{
"moderators":{
"student":"bachelor",
"id":"2021",
"school":"641",
"qualities":{
"season":"Spring",
"quality":{
"speed":"Fast xxxxxxxx",
"manage":"Any text xxxxxxx"
},
"qualities":{
"season":"Spring",
"quality":{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxx"
},
"qualities":[
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Cold",
"qualities":[
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring AND",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
}
]
}
]
}
}
}
}So, I want to change "season":"Spring", by "Spring", and also, quality like the next:"quality"{
"speed":"fast",
"manage":"xxxxf"
}
I want replace like:
"quantity": [{
"quantity1":["xxxx","dddd","zzz"],
"quantity2":["xxxx","dddd","zzz"]
]},
My python code:
"""Extract nested values from a JSON tree."""
def flatten_json(obj):
ret = {}
def flatten(x, flattened_key=""):
if type(x) is dict:
for current_key in x:
flatten(x[current_key], flattened_key + current_key + '_')
elif type(x) is list:
i=0
for elem in x:
flatten(elem, flattened_key + str(i) + '_')
i+=1
else:
ret[flattened_key[:-1]] = x
flatten(obj)
return ret
if __name__ == "__main__":
nested_obj = obj = {
"moderators":{
"student":"bachelor",
"id":"2021",
"school":"641",
"qualities":{
"season":"Spring",
"quality":{
"speed":"Fast xxxxxxxx",
"manage":"Any text xxxxxxx"
},
"qualities":{
"season":"Spring",
"quality":{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxx"
},
"qualities":[
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Cold",
"qualities":[
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring AND",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
},
{
"season":"Spring",
"quality":[
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
},
{
"speed":"Slow xxxxxxxx",
"manage":"Any text xxxxxxx"
}
]
}
]
}
]
}
}
}
}
print(flatten_json(nested_obj))But I want the things as I told to you, the problem is that right now I don't know how to do that :/.Expected JSON:
{
"moderators":{
"student":"bachelor",
"id":"2021",
"school":"641",
"qualities":[
{"Spring": [
{"Cold": [
["data1", "data2", "data3", "data4"],
{"Spring": [
{"Spring": [
["txt1", "txt2", "txt3"],
["abc", "txt2", "txt3"],
["azx", "txt2", "txt3"]
]},
{"Cold": [
["txt1", "txt2", "txt3"],
["abc", "txt2", "txt3"],
["azx", "txt2", "txt3"]
]},
{"Spring": [
["txt1", "txt2", "txt3"],
["abc", "txt2", "txt3"],
["azx", "txt2", "txt3"]
]}
]}
]},
{"Cold": [
["data1", "data2", "data3", "data4"],
{"Spring": [
{"Spring": [
["txt1", "txt2", "txt3"],
["abc", "txt2", "txt3"],
["azx", "txt2", "txt3"]
]},
{"Spring": [
["data1", "data2", "data3", "data4"],
{"Spring": [
{"Spring": [
["txt1", "txt2", "txt3"],
["abc", "txt2", "txt3"],
["azx", "txt2", "txt3"]
]}
]}
]}
]}
]}
]}
]
}
}
