简体   繁体   English

如何反序列化多维数组中的 JSON 对象

[英]How to deserialize a JSON Object in a multidimensional array

I have this JSON data and I would like to deserialize it with Android to get it as an object to use in my class.我有这个 JSON 数据,我想用 Android 反序列化它以将它作为一个对象在我的类中使用。 I get this folowing error :我收到以下错误:

Could not read JSON: Unrecognized field "card_details"无法读取 JSON:无法识别的字段“card_details”

[
    {
        "id": "9",
        "cat_id": "CAT-8584ce02f180b57a8c6d66570f696e02",
        "app_id": "null",
        "status": "1",
        "lft": "1",
        "rgt": "2",
        "parent_cat_id": "0",
        "added_date": "2017-01-12 12:41:29",
        "last_edit_date": "2017-01-12 12:46:09",
        "language_id": "0",
        "category_id": "CAT-8584ce02f180b57a8c6d66570f696e02",
        "name": "Sport",
        "description": "This is sport category",
        "image": "notitia/USR-70903638005256656/app-content/cat-img-da1161af03df255a989f8df5fc2e15bd.png",
        "tags": "",
        "custom_url": "sport",
        "card_details": {
            "nom_carte": "Pinacolada",
            "prix": "5000",
            "image": "notitia/USR-44043694343417880/app-content/e0fa7beb401e8fe77727f5a8241ff872.jpg",
            "validity": "1"
        }
    }
]

Here is my AsyncTask to retrieve the data:这是我检索数据的 AsyncTask:

private class HttpRequestTaskCarte extends AsyncTask<Void,Void,Item[]> {

        @Override
        protected Item[] doInBackground(Void... params) {
            try {
                final String url = "http://domain.com/link.php?target=multi";
                RestTemplate restTemplate = new RestTemplate();
                restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
                Item[] greeting = restTemplate.getForObject(url, Item[].class);
                return greeting;
            } catch (Exception e) {

                //Toast.makeText(getActivity(), "Error Loading  !", Toast.LENGTH_SHORT).show();
                Log.e("MainActivity", e.getMessage(), e);
            }

            return null;
        }

        protected void onPreExecute(){

            progressDialog = new ProgressDialog(getActivity(),
                    R.style.AppTheme_Dark_Dialog);
            progressDialog.setIndeterminate(true);
            progressDialog.setMessage("chargement des elements...");
            progressDialog.show();

        }

        @Override
        protected void onPostExecute(Item[] greeting) {


            Log.d("okokok",""+greeting.length);

            progressDialog.dismiss();

        }

    }

And here is the class that I am using to deserialize:这是我用来反序列化的类:

public class Item {

    private List<card_details> carte;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getCat_id() {
        return cat_id;
    }

    public void setCat_id(String cat_id) {
        this.cat_id = cat_id;
    }

    public String getApp_id() {
        return app_id;
    }

    public void setApp_id(String app_id) {
        this.app_id = app_id;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getLft() {
        return lft;
    }

    public void setLft(String lft) {
        this.lft = lft;
    }

    public String getRgt() {
        return rgt;
    }

    public void setRgt(String rgt) {
        this.rgt = rgt;
    }

    public String getParent_cat_id() {
        return parent_cat_id;
    }

    public void setParent_cat_id(String parent_cat_id) {
        this.parent_cat_id = parent_cat_id;
    }

    public String getAdded_date() {
        return added_date;
    }

    public void setAdded_date(String added_date) {
        this.added_date = added_date;
    }

    public String getLast_edit_date() {
        return last_edit_date;
    }

    public void setLast_edit_date(String last_edit_date) {
        this.last_edit_date = last_edit_date;
    }

    public String getLanguage_id() {
        return language_id;
    }

    public void setLanguage_id(String language_id) {
        this.language_id = language_id;
    }

    public String getCategory_id() {
        return category_id;
    }

    public void setCategory_id(String category_id) {
        this.category_id = category_id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getTags() {
        return tags;
    }

    public void setTags(String tags) {
        this.tags = tags;
    }

    public String getCustom_url() {
        return custom_url;
    }

    public void setCustom_url(String custom_url) {
        this.custom_url = custom_url;
    }

    public List<Detail_cartes> getCarte() {
        return carte;
    }

    public void setCarte(List<Detail_cartes> carte) {
        this.carte = carte;
    }


    public static class Detail_cartes{
        private String nom_carte ;
        private String prix ;
        private String image ;
        private String validity ;
    }

}
JSONArray array=new JSONArray(your data);
JSONObject obj=array.getJSONObject(0);
JSONObject cardDetail=obj.getJSONObject("card_details");

Hii u can use the following code:您好,您可以使用以下代码:

    JSONArray jsonarray = new JSONArray(jsonStr);
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String name = jsonobject.getString("name");
String url = jsonobject.getString("url");

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM