Comment json analyser ces données?
Je ne l'ai pas analysé.

{"boh" : {
      "-LBktL2BIRnG6yZPzX9M" : {
        "address" : "Улаанбаатар",
        "firstname" : "Болд",
        "floatt" : "9",
        "lastname" : "Бат ",
        "title" : "улсын начин"
      },
      "-LBktTUZMDLqkoMR49Gv" : {
        "address" : "Улаанбаатар",
        "firstname" : "Эрдэнэ",
        "floatt" : "",
        "lastname" : "Болд",
        "title" : "залуу бөх"
      },
      "-LBkt_OIvRGD-r_L40EH" : {
        "address" : "Улаанбаатар",
        "firstname" : "Нямхүү",
        "floatt" : "5",
        "lastname" : "Буянжаргал",
        "title" : "улсын заан"
      }
};

J'ai écrit le code ci-dessous :;

 JSONObject obj1 = new JSONObject(jsonString);
                        JSONArray result = obj1.getJSONArray("boh");
                            for(int i=0;i<=result.length();i++)
                            {
                                JSONObject c = result.getJSONObject(i);
                                String address=c.getString("address");
                                String firstname=c.getString("firstname");
                                String floatt=c.getString("floatt");
                                String lastname=c.getString("lastname");
                                String title=c.getString("title");

                            };

Mais, erreur JSONException

Comment une analyse de résolution dans Android m'aide-t-elle?

0
Amarsaikhan 23 mai 2018 à 16:14

3 réponses

Meilleure réponse

En utilisant Iterator, vous pouvez transmettre les données

 JSONObject obj1 = new JSONObject(jsonString);
    JSONObject result = obj1.getJSONObject("boh");
    Iterator<String> iter = result.keys();
    while (iter.hasNext()) {
        String key = iter.next();
        JSONObject c = result.getJSONObject(key);
        String address=c.getString("address");
        String firstname=c.getString("firstname");
        String floatt=c.getString("floatt");
        String lastname=c.getString("lastname");
        String title=c.getString("title");

    }            
1
MJM 23 mai 2018 à 13:33

boh n'est pas un tableau JSON, c'est un objet JSON avec des enfants. Si boh était un tableau, il ressemblerait à ceci (notez les crochets [ ]):

{"boh" : [ 
  {
    "address" : "Улаанбаатар",
    "firstname" : "Болд",
    "floatt" : "9",
    "lastname" : "Бат ",
    "title" : "улсын начин"
  },
  {
    "address" : "Улаанбаатар",
    "firstname" : "Эрдэнэ",
    "floatt" : "",
    "lastname" : "Болд",
    "title" : "залуу бөх"
  },
  {
    "address" : "Улаанбаатар",
    "firstname" : "Нямхүү",
    "floatt" : "5",
    "lastname" : "Буянжаргал",
    "title" : "улсын заан"
  }]
}

Donc, pour accéder à ces objets enfants, vous devez traiter boh comme un JSONObject et accéder à ses enfants dans l'ordre:

JSONObject obj1 = new JSONObject(jsonString);
JSONObject result = obj1.getJSONObject("boh");

Iterator<String> keys = result.keys();
while(keys.hasNext()) {
    String key = keys.next();
    JSONObject c = result.getJSONObject(key);

    String address=c.getString("address");
    String firstname=c.getString("firstname");
    String floatt=c.getString("floatt");
    String lastname=c.getString("lastname");
    String title=c.getString("title");
};
0
Michael Dodd 23 mai 2018 à 13:31

Utilisez la bibliothèque Gson

Classe pour la valeur de la carte intérieure

public class Example{
  @SerializedName("firstname")
  @Expose
  private String firstname;
  @SerializedName("address")
  @Expose
  private String address;
  @SerializedName("floatt")
  @Expose
  private Integer floatt;
  @SerializedName("title")
  @Expose
  private String title;
  @SerializedName("lastname")
  @Expose
  private String lastname;
  public void setFirstname(String firstname){
   this.firstname=firstname;
  }
  public String getFirstname(){
   return firstname;
  }
  public void setAddress(String address){
   this.address=address;
  }
  public String getAddress(){
   return address;
  }
  public void setFloatt(Integer floatt){
   this.floatt=floatt;
  }
  public Integer getFloatt(){
   return floatt;
  }
  public void setTitle(String title){
   this.title=title;
  }
  public String getTitle(){
   return title;
  }
  public void setLastname(String lastname){
   this.lastname=lastname;
  }
  public String getLastname(){
   return lastname;
  }
}

Pour l'analyse

Map<String, HashMap<String, Example>> categoryMap = new Gson().fromJson(br, new TypeToken<Map<String, HashMap<String, Example>>>(){}.getType());

Pour obtenir de la valeur

Iterator it = categoryMap.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry)it.next();
      Iterator it = ((HashMap<String, Example>>)categoryMap.get(pair.getKey())).entrySet().iterator();
       while (it.hasNext()) {
        System.out.println(pair.getKey() + " = " + pair.getValue());
         Example mExample = (Example)categoryMap.get(pair.getKey());//
      }
        it.remove(); // avoids a ConcurrentModificationException
    }
0
Mayur Raval 23 mai 2018 à 13:22