Witam,

Poprzednio zapisywałem wybór użytkownika ze spinnera za pomocą pickle. Teraz chciałem przećwiczyć pliki json i pojawił się jeden problem: (kod skrócony do minimum)

kv:


    Spinner:
        id: spinner_sex
        pos_hint: {'x': .35, 'y': .65}
        size_hint: .30, .05
        background_color:0, 0, 0, 0
        text: '< Select >'
        values: ('Male', 'Female')
        on_text: root.save_input_spinner(spinner_sex.id, spinner_sex.text)
     
        
    Spinner:
        id: spinner_goal
        pos_hint: {'x': .35, 'y': .04}
        size_hint: .30, .05
        background_color:0, 0, 0, 0
        text: '< Select >'
        values: ('Strenght', 'Mass', 'Sculpture')
        on_text: root.save_input_spinner(spinner_goal.id, spinner_goal.text)
       
    
    SpinnerKg:
        id: spinner_kg
        pos_hint: {'x': .45, 'y': .45}
        size_hint: .1, .05
        text: '<Select>'
        background_color:0, 0, 0, 0
        on_text: root.save_input_spinner(spinner_kg.id, spinner_kg.text)
       

python:


class SpinnerKg(Spinner):
    values=(str(n) for n in range(40, 120))


class DetailsScreen(Screen):


    def save_input_spinner(self, id, text):
        store = JsonStore("store.json")

        store.put('details', id= str(text))

W przypadku pickle, tworzyłem zapis w słowniku details[id] = str(text) i picklowałem. Więc pod id miałem zapisane np. weight = 70, sex = male itp.
W json nie mogę wymyślić jak zapisać kod żeby kluczem był tekst z id spinnera. Zapis wygląda id = 70 po czym za każdym razem tylko zmienia wartość id, nie ważne, którego spinnera użyje. Da się to jakoś "naprawić" czy trzeba zrobić osobną funkcję dla każdego spinnera?