Dec-09-2021, 03:04 AM
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"] ]} ]} ]} ]} ]} ]} ] } }