Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Σε Android, παίρνω από ένα query ένα table με δεδομένα αυτής της μορφής (τα οποία η db ονομάζει json observable) 

"{"group":{"operator":"AND","rules":[{"condition":"=","field":"OB_58","data":"moderate"},{"condition":"=","field":"OB_64","data":"male"}]}}"

Το συγκεκριμένο string εκφράζει τη λογική συνθήκη 

"OB_58 = 'moderate' AND OB_64 = 'male'"

Το αρχικό table (αν κρίνω από τα αποτελέσματα στο google) πρέπει να το επεξεργαστώ με jsoup, αλλά δεν έχει json parser.

Αξίζει να κατεβάσω και 2ο parser ή να χρησιμοποιήσω το default του Android;
Υπάρχει κάποιο API που να κάνει και τα 2;
Η λογική συνθήκη φάινεται απλή, μηπως υπάρχει έτοιμος parser για αυτό;

Δημοσ.

Στο project που δουλεύω τώρα χρησιμοποιούμε GSON:

 

import com.google.gson.GsonBuilder;
import com.google.gson.stream.JsonReader;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.List;    

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final InputStream stream = new ByteArrayInputStream("{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"OB_58\",\"data\":\"moderate\"},{\"condition\":\"=\",\"field\":\"OB_64\",\"data\":\"male\"}]}}".getBytes(StandardCharsets.UTF_8));
        try {
            Query query = parse(stream);
            System.out.println("The operator is: " + query.getGroup().getOperator());
        } catch (IOException exception) {
            exception.printStackTrace();
        }
    }

    private class Rule {
        private String condition;
        private String field;
        private String data;

        public String getCondition() {
            return condition;
        }

        public void setCondition(String condition) {
            this.condition = condition;
        }

        public String getField() {
            return field;
        }

        public void setField(String field) {
            this.field = field;
        }

        public String getData() {
            return data;
        }

        public void setData(String data) {
            this.data = data;
        }
    }

    private class Group {
        private String operator;
        private List<Rule> rules;

        public String getOperator() {
            return operator;
        }

        public void setOperator(String operator) {
            this.operator = operator;
        }

        public List<Rule> getRules() {
            return rules;
        }

        public void setRules(List<Rule> rules) {
            this.rules = rules;
        }
    }

    private class Query {
        public Group getGroup() {
            return group;
        }

        public void setGroup(Group group) {
            this.group = group;
        }

        private Group group;
    }

    private Query parse(InputStream inputStream) throws IOException {
        final JsonReader jsonReader = new JsonReader(new InputStreamReader(inputStream,
                Constants.UTF8_FORMAT));
        final Query obj = new GsonBuilder().create().fromJson(jsonReader, Query.class);
        jsonReader.close();
        return obj;
    }


στο build.gradle:
 

compile "com.google.code.gson:gson:2.8.0"

 

Δημοσ.

Ερώτηση: τις συναρτήσεις setRules, setGroup, κλπ πρέπει να τις χρησιμοποιήσω κάπου ή τις αναγνωρίζει και τις χρησιμοποιεί αυτόματα ο GsonBuilder?

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...