如何通过GSON解析嵌套数组 [英] How to parse nested array through GSON

查看:338
本文介绍了如何通过GSON解析嵌套数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如,我想通过GSON解析JSON响应

I want to parse a JSON Response through GSON in android, for example

 {
  "adult": false,
  "budget": 63000000,
  "spoken_languages": [
    {
      "iso_639_1": "en",
      "name": "English"
    }
  ],
}     

第一堂课

public Detail parseDetailResponse(InputStream json) {
Gson gson = new Gson();
Reader reader=new InputStreamReader(json);
Detail handle = gson.fromJson(reader, Detail.class);
return handle;

}

用于解析此内容的类

public class Detail implements Serializable{
private static final long serialVersionUID = -6814886315783830255L;

@SerializedName("adult")
public boolean Adult;
    @SerializedName("spoken_languages")
public lang[] Languages;
   }

我的郎班

public class lang implements Serializable{
private static final long serialVersionUID = -6814886315783830255L;
@SerializedName("name")
public String Name;
}

现在我想要lang.name的值,但是它给出了空指针异常.

now i want the value of lang.name, but it gives null pointer exception.. pls help How i am getting this value...

推荐答案

尝试一下,尽管这不是一种优雅的方法.但至少,它可以完成工作.

Try this, though it's not an elegant way. But at least, it get things done.

先前代码的问题是GSON认为JSON字符串中的spoken_languages是一个数组,因此您必须创建一个类似于数组的东西才能反映出来. 在这里,我选择一个ArrayList.希望您的问题能得到解决.

The problem of your previous code is that GSON thought spoken_languages in the JSON string to be an array, so you have to create something at like an array to be reflected. Here I choose an ArrayList. Hope that your problem can be settled.

import com.google.gson.GsonBuilder;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class SimpleTest {
    public static void main(String[] args) {
        String json = "{\n" +
                "  \"adult\": false,\n" +
                "  \"budget\": 63000000,\n" +
                "  \"spoken_languages\": [\n" +
                "    {\n" +
                "      \"iso_639_1\": \"en\",\n" +
                "      \"name\": \"English\"\n" +
                "    }\n" +
                "  ]\n" +
                "}     ";

        System.out.println(new SimpleTest().parseDetailResponse(new ByteArrayInputStream(json.getBytes())));
    }

    public Detail parseDetailResponse(InputStream json) {
        return new GsonBuilder().create().fromJson(new InputStreamReader(json), Detail.class);
    }

    class Detail {
        private boolean adult;
        private long budget;
        private ArrayList<SpokenLanguages> spoken_languages;

        public Detail() {

        }

        @Override
        public String toString() {
            return "DAO{" +
                    "adult=" + adult +
                    ", budget=" + budget +
                    ", spoken_languages=" + spoken_languages +
                    '}';
        }

        public boolean isAdult() {
            return adult;
        }

        public void setAdult(boolean adult) {
            this.adult = adult;
        }

        public long getBudget() {
            return budget;
        }

        public void setBudget(long budget) {
            this.budget = budget;
        }

        public List<SpokenLanguages> getSpoken_languages() {
            return spoken_languages;
        }

        public void setSpoken_languages(ArrayList<SpokenLanguages> spoken_languages) {
            this.spoken_languages = spoken_languages;
        }
    }

    class SpokenLanguages {
        private String name;
        private String iso_639_1;

        public String getName() {
            return name;
        }

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

        public String getIso_639_1() {
            return iso_639_1;
        }

        public void setIso_639_1(String iso_639_1) {
            this.iso_639_1 = iso_639_1;
        }

        @Override
        public String toString() {
            return "SpokenLanguages{" +
                    "name='" + name + '\'' +
                    ", iso_639_1='" + iso_639_1 + '\'' +
                    '}';
        }
    }
}

这篇关于如何通过GSON解析嵌套数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆