Generate JSON dynamically from android form

2

Context: I have a Cordova app that has SUS token forms with more than 30 fields that is sent to the server through JSON. I'm building a native android APP for the same function;

Problem: I need to map the fields (EditText, Spinner, CheckBox and RadioButtons) to JSON objects, in the CORE has the JQuery facility where I get all the fields of the form through the function $ ('form') and send to a function that from the type input in JSON ("input.name", "input.value"), already in Java I do not have this facility and for this reason I am mapping field by field and getting the "values" of each field of the database because the values that should be in the JSON are different from those shown for the user's sealing.

Goal: is there a library or a way to dynamically grab all the form fields in android and do a dynamic function that from the instanceof response of each field I map JSON correctly?

Sample of input mapping code for JSON:

/*
 * Geração do JSON apartir do form.
 * A principio é tratado campo por campo pela complexidade em mapear as labels
 * de RadioGroup e Spinner nos valores requeridos pelo sistema de exportação.
 */
private JSONObject formToJSON(View rootView) throws JSONException {
    JSONObject jsonObj = new JSONObject();

    /**
     * Primeira parte
     */
    //Mapeando EditTexts no JSON
    //Nome Paciente
    jsonObj.put(cadNome.getTag().toString(), cadNome.getText().toString());

    //Data Nascimento
    jsonObj.put(cadDataNasc.getTag().toString(), cadDataNasc.getText().toString());

    //Sexo
    String sexo =  rootView.findViewById(cadRadGroupSexo.getCheckedRadioButtonId()).getTag().toString();
    jsonObj.put(cadRadGroupSexo.getTag().toString(), sexo);

    //Tipo Sanguineo
    String tipoSanguineo =  cadTipoSanguineo.getSelectedItem().toString();
    //jsonObj.put(cadRadGroupSexo.getTag().toString(), sexo);
    //TODO obter id do tipo no banco de dados e inserir no JSON

    //Nome da Mãe
    jsonObj.put(cadNomeMae.getTag().toString(), cadNomeMae.getText().toString());

    //Check box desconhece nome pai
    //TODO ver como se obtem o valor do checkbox e inserir de forma correta no JSON

    //Nome pai
    jsonObj.put(cadNomePai.getTag().toString(), cadNomePai.getText().toString());

    /**
     * Segunda parte
     */
    //E-mail
    jsonObj.put(cadEmail.getTag().toString(), cadEmail.getText().toString());

    //Nacionalidade
    String nacionalidade = rootView.findViewById(cadRadGroupNac.getCheckedRadioButtonId()).getTag().toString();
    jsonObj.put(cadRadGroupNac.getTag().toString(), nacionalidade);

    //Pais de nascimento
    String paisNascimento =  cadPaisNasc.getSelectedItem().toString();
    //jsonObj.put(cadPaisNasc.getTag().toString(), );
    //TODO obter id do paisNasc no banco de dados e inserir no JSON

    //Data naturalização
    jsonObj.put(cadDataNatur.getTag().toString(), cadDataNatur.getText().toString());

    //Portaria naturalização
    jsonObj.put(cadPortariaNatu.getTag().toString(), cadPortariaNatu.getText().toString());

    //Data entrada no brasil
    jsonObj.put(cadDataEntrada.getTag().toString(), cadDataEntrada.getText().toString());

    //Estado
    String estado = cadEstado.getSelectedItem().toString();
    //TODO obter id do estado no banco de dados e inserir no JSON

    //Municipio de nascimento
    jsonObj.put(cadMunicipioNasc.getTag().toString(), cadMunicipioNasc.getText().toString());

    //Tipo de documento
    String tipoDoc = cadTipoDoc.getSelectedItem().toString();
    //TODO obter id do Tipo de documento no banco de dados e inserir no JSON

    //Documento
    jsonObj.put(cadDocumento.getTag().toString(), cadDocumento.getText().toString());

    //CNS
    jsonObj.put(cadCns.getTag().toString(),cadCns.getText().toString());

    //Prontuario
    jsonObj.put(cadProntuario.getTag().toString(), cadProntuario.getText().toString());

    //CPF
    jsonObj.put(cadCpf.getTag().toString(), cadCpf.getText().toString());

    //RG
    jsonObj.put(cadRg.getTag().toString(), cadRg.getText().toString());

    //CTPS
    jsonObj.put(cadCtps.getTag().toString(), cadCtps.getText().toString());

    //Raca/Cor
    String racaCor = cadRacaCor.getSelectedItem().toString();
    //TODO obter id do Raca/Cor no banco de dados e inserir no JSON


    return null;
}

Template of a function that would be dynamic I'm looking for:

public void formToJson(Inputs input){
    if(input instanceof EditText){
        //Executo o mepeamento de EditText
    }
    if(input instanceof Spinner){
        //Executo o mapeamento de Spinner
    }
    //Assim por diante
}
    
asked by anonymous 23.10.2018 / 18:41

0 answers