网络编程--JSON数据解析

  • JSON格式的数据有两种解析方式,一种是使用JSONObject,这种解析方式在 IO处理这篇博客中已经详细的讲解过了,如果有疑问可以去这篇博客中学习。
  • 这里我们只讲解第二种方式GSON方式

GSON

  • 使用GSON需要导入第三方的包
    这里写图片描述

  • 解析的数据如下所示

[
    {"name":"rose","age":"25"},
    {"name":"jack","age":"20"},
    {"name":"hello","age":"3"},
    {"name":"world","age":"2"}
]
  • 首先,我们根据json数据的格式,创建一个对应的Bean类
public class People {
    private String name;
    private String age;

    public People(String name, String age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}
  • 总体的逻辑代码如下:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button button_gson,button_json;
    private String data;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        data="[{\"name\":\"rose\",\"age\":\"25\"},{\"name\":\"jack\",\"age\":\"20\"},{\"name\":\"hello\",\"age\":\"3\"},{\"name\":\"world\",\"age\":\"2\"}]";
    }

    private void init() {
        button_gson= (Button) findViewById(R.id.button_gson);
        button_json= (Button) findViewById(R.id.button_json);
        button_gson.setOnClickListener(this);
        button_json.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button_gson:
                Gson gson=new Gson();
                List<People> peoples=gson.fromJson(data,new TypeToken<List<People>>(){}.getType());
                for (People people:peoples){
                    Log.d("***",people.getName()+people.getAge());
                }
                break;
            case R.id.button_json:
                try {
                    JSONArray jsonArray=new JSONArray(data);
                    for (int i=0;i<jsonArray.length();i++){
                        JSONObject obj= jsonArray.getJSONObject(i);
                        Log.d("***",obj.getString("name")+obj.get("age"));
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                break;
        }
    }
}
  • 重点代码分析
                Gson gson=new Gson();
                List<People> peoples=gson.fromJson(data,new TypeToken<List<People>>(){}.getType());
                for (People people:peoples){
                    Log.d("***",people.getName()+people.getAge());
                }
  • 首先我们获取了一个Gson的实例对象,
  • 由于我们要解析的是一个JSON数组,所以我们需要借助TypeToken将期望解析成的数据类型传入到fromJson()方法中,
  • 然后用一个对应的List存放解析后的数据
  • 在遍历这个List就可以了
[
    {"name":"rose","age":"25"}
]
  • 如果我们要解析的不是一个JSON数据,仅仅是一个JSON数据,那么就简单很多了
                Gson gson=new Gson();
                People people=gson.fromJson(data,People.class);
  • 就可以将数据解析出来了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值