2017-09-16 3 views
0

Aujourd'hui, j'ai du mal à comprendre comment extraire des valeurs spécifiques de cette chaîne JSON.Comment extraire une donnée spécifique d'une chaîne de format json pour remplir recyclerview?

Rappelez-vous, j'ai l'intention de remplir une vue de recyclage avec des données tirées d'ici.

Permettez-moi d'abord vous montrer le format de la chaîne JSON:

[ 
{ 
"recipe_filter":"Veg", 
"recipe_array":[ 
{ 
"recipe_name":"Nimki", 
"recipe_image":"nimki", 
"isFavourite":false, 
"isInCookList":false, 
"recipe_prep_time":"2 Hours", 
"recipe_prep_steps":"Steps", 
"recipe_ingredients":"123456" 
}, 
{ 
"recipe_name":"Palang Paneer", 
"recipe_image":"palang_paneer", 
"isFavourite":false, 
"isInCookList":false, 
"recipe_prep_time":"1.5 Hours", 
"recipe_prep_steps":"Steps", 
"recipe_ingredients":"12" 
} 
] 
}, 
{ 
"recipe_filter":"Non Veg", 
"recipe_array":[ 
{ 
"recipe_name":"Chicken Rezala", 
"recipe_image":"chicken_rezala", 
"isFavourite":false, 
"isInCookList":false, 
"recipe_prep_time":"2 Hours", 
"recipe_prep_steps":"1234567", 
"recipe_ingredients":"123" 
}, 
{ 
"recipe_name":"Omu Rice", 
"recipe_image":"omu_rice", 
"isFavourite":false, 
"isInCookList":false, 
"recipe_prep_time":"1 Hour", 
"recipe_prep_steps":"123456", 
"recipe_ingredients":"12" 
} 
] 
}, 
{ 
"recipe_filter":"", 
"recipe_array":[ 
{ 
"recipe_name":"", 
"recipe_image":"", 
"isFavourite":false, 
"isInCookList":false, 
"recipe_prep_time":"", 
"recipe_prep_steps":"", 
"recipe_ingredients":"" 
}, 
{ 
"recipe_name":"", 
"recipe_image":"", 
"isFavourite":false, 
"isInCookList":false, 
"recipe_prep_time":"", 
"recipe_prep_steps":"", 
"recipe_ingredients":"" 
} 
] 
} 
] 

Je veux récupérer les données dans le recyclerview selon que le recipe_filter est VEG ou non veg.

Alors les gars, s'il vous plaît donnez-moi des conseils sur la façon de récupérer seulement la valeur de recette, les recettes végétariennes ou non selon la valeur de recipe_filter dans ce cas.

Répondre

1

Première valeur get de votre « recipe_filter » puis après comparaison avec votre valeur S'il vous plaît vérifier ci-dessous le code:

d'abord créer une réponse JSON classe POJO:

public class RecipeResponse { 

@SerializedName("recipe_filter") 
@Expose 
private String recipeFilter; 
@SerializedName("recipe_array") 
@Expose 
private List<RecipeArray> recipeArray = null; 

public String getRecipeFilter() { 
return recipeFilter; 
} 

public void setRecipeFilter(String recipeFilter) { 
this.recipeFilter = recipeFilter; 
} 

public List<RecipeArray> getRecipeArray() { 
return recipeArray; 
} 

public void setRecipeArray(List<RecipeArray> recipeArray) { 
this.recipeArray = recipeArray; 
} 

} 

Après avoir réussi réponse JSON Comparez votre valeur recipe_filter avec ou non veg veg .:

public void doRecipeSuccess(RecipeResponse mRecipeResponse){ 
    if(mRecipeResponse.recipeFilter.equal("veg")){ 
// Write down veg code. 
}else if(mRecipeResponse.recipeFilter.equal("non veg")){ 
// Write down non veg code. 
    } 
} 
+1

Je pensais le long de la ligne d'utiliser JSON interrogation pour récupérer les données en conséquence –

+0

@BodhisatwaChakraborty utilise aussi Rénovation pour l'analyse JSON. –

0

Essayez cette

Activité principale

  • déclarer au-dessus de la méthode oncreate

    RecyclerView rv_myCart; 
    Adapter adapter; 
    ArrayList<HashMap<String,String>> all_list=new ArrayList<>(); 
    
  • dans votre méthode sur la création utilisation de ce code

    rv_myCart=(RecyclerView)findViewById(R.id.rv_completepurchase); 
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
    rv_myCart.setLayoutManager(mLayoutManager); 
    rv_myCart.setItemAnimator(new DefaultItemAnimator()); 
    adapter = new Adapter(all_list); 
    rv_myCart.setAdapter(adapter); 
        try { 
         JSONArray json=new JSONArray(strjson); 
    //    Log.e(TAG, "json: "+json); 
         for (int i=0;i<json.length();i++) 
         { 
          HashMap<String,String> hashMap=new HashMap<>(); 
          JSONObject jsonobject=json.getJSONObject(i); 
    //     Log.e(TAG, "recipe_filter: "+jsonobject.getString("recipe_filter")); 
          hashMap.put("recipe_filter",jsonobject.getString("recipe_filter")); 
          JSONArray recipe_array=jsonobject.getJSONArray("recipe_array"); 
         //     Log.e(TAG, "recipe_array: "+recipe_array); 
          for (int j=0;j<recipe_array.length();j++) 
          { 
           JSONObject object=recipe_array.getJSONObject(j); 
         //      Log.e(TAG, "recipe_name: "+object.getString("recipe_name")); 
           hashMap.put("recipe_name",object.getString("recipe_name")); 
          } 
          all_list.add(hashMap); 
         } 
         adapter.notifyDataSetChanged(); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
         Log.e(TAG, "e: "+e); 
        } 
    

classe Adaptateur

  • Declare dans votre classe d'adaptateur

    private List<HashMap<String,String>> myCartList; 
    
  • votre méthode d'adaptation

    public Adapter(List<HashMap<String,String>> myCartList) { 
    this.myCartList= myCartList; 
    } 
    
  • dans votre méthode onBindViewHolder

    HashMap<String,String> hashmap=myCartList.get(position); 
    if (hashmap.get("recipe_filter").equals("Veg")) 
    { 
        //todo when recipe_filter is veg 
    } 
    else 
    { 
        //// TODO: when recipe_filter is nonveg 
    } 
    

Remarque: face -encore code complet de téléchargement de problème here

0

Dans votre commentaire à la réponse de Vishal Patolia, vous mentionnez l'interrogation JSON. Sur Android sans bibliothèque, une option d'accès aux données JSON utilise la bibliothèque org.json intégrée à la plate-forme Android.Alors que vous ne pouvez pas faire une seule requête directe pour accéder aux données que vous voulez, vous pouvez vous y rendre par programme en vous interrogeant sur vos données.

Voici comment vous obtiendrez le recipe_array pour « Veg »:

JSONArray json = new JSONArray(jsonString); 
for (int i = 0; i < json.length(); i++) { 
    if (json.getJSONObject(i).getString("recipe_filter").equals("veg")) { 
     // Here is one recipe_array for veg 
     JSONArray someVegArrayData = json.getJSONObject(i).getJSONArray("recipe_array"); 
    } 
} 

Je vous recommande d'aller avec la réponse de Vishal et d'utiliser la bibliothèque Gson ou quelque chose de similaire pour analyser votre JSON.

+1

Merci de recommander ma réponse. –

1

Créer des classes POJO, puis utiliser la bibliothèque GSON a link