android 用gson 解析数据出错!
PHPz
PHPz 2017-04-17 17:05:24
[Android讨论组]

我用如下方法解析一个json字符串,但是就是运行都这就闪退了,不知道什么原因。

    protected void parseData(String result) {
        // TODO Auto-generated method stub
        Gson gson=new Gson();
        NewData data=gson.fromJson(result,NewData.class);
        System.out.println(data.toString());
         
    }

这是newData类

public class NewData{
    
      public ArrayList<kindFood>  food;
      
       public class kindFood{
            public String Description;
            public String PicUrl;
            public String Title;
            public String Url;
            
            @Override
            public String toString() {
                return "kindFood [Description=" + Description + ", PicUrl=" + PicUrl + ", Title=" + Title + ", Url="
                        + Url + "]";
            }

        }

}

这是json数据

[
    {
        "Description": "",
        "PicUrl": "",
        "Title": "鸡蛋热量(100克)",
        "Url": ""
    },
    {
        "Description": "",
        "PicUrl": "",
        "Title": "鸡蛋    144 大卡",
        "Url": "http://i.boohee.com/mfood/view/910"
    },
    {
        "Description": "",
        "PicUrl": "",
        "Title": "鸡蛋(土鸡)    138 大卡",
        "Url": "http://i.boohee.com/mfood/view/913"
    },
    {
        "Description": "",
        "PicUrl": "",
        "Title": "鸡蛋(煮)    151 大卡",
        "Url": "http://i.boohee.com/mfood/view/1757"
    },
    {
        "Description": "",
        "PicUrl": "",
        "Title": "鸡蛋白(鸡蛋清)    60 大卡",
        "Url": "http://i.boohee.com/mfood/view/914"
    },
    {
        "Description": "",
        "PicUrl": "",
        "Title": "鸡蛋(白皮)    138 大卡",
        "Url": "http://i.boohee.com/mfood/view/911"
    },
    {
        "Description": "",
        "PicUrl": "",
        "Title": "鸡蛋(红皮)    156 大卡",
        "Url": "http://i.boohee.com/mfood/view/912"
    }
]
PHPz
PHPz

学习是最好的投资!

全部回复(6)
巴扎黑

你可以只保留KindFood类 里面注意有getter setter 方法 然后

Gson gson = new Gson();
List<KindFood> listFood = gson.fromJson(result,new TypeToken<List<KindFood>>(){}.getType());
PHP中文网

试一下不要把kindFood作为内部类

迷茫

首先,将kindFood这个类提出来。
其次,将NewData data=gson.fromJson(result,NewData.class);改成KindFood data=gson.fromJson(result,kindFood[].class);

大家讲道理

使用gsonformat插件可以快速解决类似问题

public class food{
    /**
     * Description :
     * PicUrl :
     * Title : 鸡蛋热量(100克)
     * Url :
     */
    private String Description;
    private String PicUrl;
    private String Title;
    private String Url;

    public String getDescription() {
        return Description;
    }

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

    public String getPicUrl() {
        return PicUrl;
    }

    public void setPicUrl(String PicUrl) {
        this.PicUrl = PicUrl;
    }

    public String getTitle() {
        return Title;
    }

    public void setTitle(String Title) {
        this.Title = Title;
    }

    public String getUrl() {
        return Url;
    }

    public void setUrl(String Url) {
        this.Url = Url;
    }
}

然后在添加到arraylist

ringa_lee

你这个json数组的key是food么?而且最好把get set 方法设置了

怪我咯

需要使用到typetoken解析即可

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号