android studio http json,安卓解析JSON接口并显示( AndroidStudio)

一:我们先来看接口里面的数据怎么样的

9e130e237478783bc33fc689cb12473b.png Json数据

在FireFox浏览器上能很简明的显示接口数据

2.xml 布局文件

3. 安卓的Http的GET请求将获取的对象数组,并解析,存到一个实体类里面

3.1 我们先来生成一个实体类

AndroidStudio 可以用GsonFormat轻松生成一个实体类

File>Settings>Plugins>Browse repositories

18da5ddfd71eaa189026b510c05e9df0.png

然后重启下AS 新建一个Class   用ALT+S弹出

30e77adbe9c7dc27c0f258c0ba56df1d.png

AS就会自动生成一个实体类

3.2 MainActivity 代码

package com.example.administrator.bijian;

import android.app.ProgressDialog;

import android.os.AsyncTask;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.LinearLayout;

import android.widget.ListView;

import android.widget.TextView;

import com.alibaba.fastjson.JSON;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.ArrayList;

import java.util.List;

public class MainActivity extends AppCompatActivity {

private ListView Lv_main_list;

private ListTeacherList = new ArrayList();

private ProgressDialog progressDialog;

private MyAdapter myAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Lv_main_list =(ListView) findViewById(R.id.Lv_main_list);

//实例化进度条对话框

progressDialog = new ProgressDialog(this);

progressDialog.setMessage("亲,正在玩命加载中哦!");

实例化适配器

myAdapter = new MyAdapter();

Lv_main_list.setAdapter(myAdapter);

// Utility.setListViewHeightBasedOnChildren(Lv_main_list);

}

//适配器

class MyAdapter extends BaseAdapter{

@Override

public int getCount() {

return TeacherList.size();

}

@Override

public Object getItem(int i) {

return TeacherList.get(i);

}

@Override

public long getItemId(int i) {

return i;

}

@Override

public View getView(int i, View view, ViewGroup viewGroup) {

LinearLayout layout = new LinearLayout(MainActivity.this);

// layout.setOrientation(LinearLayout.HORIZONTAL);

layout.setOrientation(LinearLayout.VERTICAL);

TextView textViewArea = new TextView(MainActivity.this);

textViewArea.setText(TeacherList.get(i).getArea()+"\t"+" ");

TextView textViewTime = new TextView(MainActivity.this);

textViewTime.setText(TeacherList.get(i).getTime()+"\t");

// textViewArea.setTextSize(20);

TextView textViewHref = new TextView(MainActivity.this);

textViewHref.setText(TeacherList.get(i).getHref()+"\t");

TextView textViewTitle = new TextView(MainActivity.this);

textViewTitle.setText(TeacherList.get(i).getTitle()+"\t");

TextView textViewType = new TextView(MainActivity.this);

textViewType.setText(TeacherList.get(i).getType()+"\t");

layout.addView(textViewArea);

layout.addView(textViewTime);

layout.addView(textViewHref);

layout.addView(textViewTitle);

layout.addView(textViewType);

return layout;

}

}

//获取xml数据

public void getJson(View view){

new MyTask().execute();

}

//通过异步任务类获取数据

class MyTask extends AsyncTask{

private JsonTeacherEntity jsonTeacherEntity;

//准备执行

@Override

protected void onPreExecute() {

super.onPreExecute();

progressDialog.show();

}

@Override

protected Object doInBackground(Object[] objects) {

String path="接口URL";

try {

URL url = new URL(path);

//获取连接对象

HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();

//设置请求方式

httpURLConnection.setRequestMethod("GET");

//设置连接超时

httpURLConnection.setConnectTimeout(5000);

//获取响应码

int code = httpURLConnection.getResponseCode();

if (code==200)

{

//响应成功,获取服务器返回过来的数据

final InputStream is = httpURLConnection.getInputStream();

//测试数据

StringBuffer stringBuffer = new StringBuffer();

String str=null;

BufferedReader br = new BufferedReader(new InputStreamReader(is));

while ((str=br.readLine())!=null){

stringBuffer.append(str);

}

//03.使用fastJson解析Json、

ListTeachers = JSON.parseArray(stringBuffer.toString(), JsonTeacherEntity.class);

for (JsonTeacherEntity TT:Teachers)

{

jsonTeacherEntity = new JsonTeacherEntity();

String area = TT.getArea();

String href = TT.getHref();

String time = TT.getTime();

String title = TT.getTitle();

String type = TT.getType();

jsonTeacherEntity.setArea(area);

jsonTeacherEntity.setHref(href);

jsonTeacherEntity.setTime(time);

jsonTeacherEntity.setTitle(title);

jsonTeacherEntity.setType(type);

TeacherList.add(jsonTeacherEntity);

}

}

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

@Override

protected void onPostExecute(Object o) {

super.onPostExecute(o);

//通知适配器发生改变

myAdapter.notifyDataSetChanged();

//取消进度条对话框

progressDialog.cancel();

}

}

}

显示的效果

72e53dbddc01b1875e6f0676a1603360.png

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Gson 或 Jackson 库来解析 JSON 数据。 1. Gson: 使用 Gson 库需要先在 build.gradle 中添加依赖,然后可以使用 Gson 的 fromJson() 方法将 JSON 字符串转换成 Java 对象。 2. Jackson: 使用 Jackson 库需要先在 build.gradle 中添加依赖,然后可以使用 ObjectMapper 的 readValue() 方法将 JSON 字符串转换成 Java 对象。 具体使用方法可以参考官方文档和网上教程。 ### 回答2: Android Studio是一款跨平台的应用开发工具,可以轻松实现Android应用的开发、测试、调试和部署等工作。在Android应用中,我们经常需要使用JSON数据进行数据交互和数据存储,因此,在Android Studio解析JSON数据是非常重要的基础技能。 解析JSON数据的主要步骤如下: 1. 准备JSON数据 在开发Android应用时,我们通常会从服务器获取JSON数据,或者从文件、数据库中读取JSON数据,或者手动创建JSON数据。无论是什么方式,我们都必须准备好要解析JSON数据。 2. 解析JSON数据 在Android Studio中,可以使用GSON库或者内置的JSON解析工具来解析JSON数据。 GSON是Google提供的Java库,可以将Java对象和JSON数据互相转换。使用GSON解析JSON数据的步骤如下: - 第一步,在gradle文件中添加GSON库的依赖: ```java dependencies { implementation 'com.google.code.gson:gson:2.8.6' } ``` - 第二步,创建Java对象来存储需要解析JSON数据: ```java public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` - 第三步,使用GSON解析JSON数据: ```java Gson gson = new Gson(); String jsonStr = "{\"name\":\"Tom\",\"age\":20}"; Person person = gson.fromJson(jsonStr, Person.class); ``` 以上代码中,我们将JSON字符串转换成一个Person对象,其中fromJson()方法的第一个参数是JSON字符串,第二个参数是Java对象的类型。 如果不想使用GSON库,也可以使用Android内置的JSON解析工具来解析JSON数据,步骤如下: - 第一步,创建JSON对象: ```java JSONObject jsonObject = new JSONObject(jsonStr); ``` - 第二步,获取需要的属性值: ```java String name = jsonObject.getString("name"); int age = jsonObject.getInt("age"); ``` 以上代码中,我们通过JSONObject对象的getString()和getInt()方法获取JSON数据的属性值。 3. 显示解析结果 在解析JSON数据之后,我们需要将解析结果显示到用户界面上,可以使用Android的UI组件,如TextView、ListView等来展示数据。 总之,解析JSON数据是Android应用开发的重要技能之一,无论是使用GSON库还是使用内置的JSON解析工具,合理、高效地解析JSON数据是保证应用良好使用体验的关键之一。 ### 回答3: Android Studio是目前最流行的Android开发工具之一,它可以帮助我们快速地开发出高质量的应用程序。在Android应用程序的开发中,经常需要使用JSON格式的数据来传递和存储数据。JSON是一种非常方便的数据格式,它可以轻松地描述数据结构和嵌套对象。那么,在Android Studio中如何解析JSON数据呢? 1. 引入依赖库 在Android Studio中,要解析JSON数据,首先需要添加对GSON库的依赖。在项目的build.gradle文件中添加以下代码: ```java dependencies { implementation 'com.google.code.gson:gson:2.8.5' } ``` 2. 创建Java类 为了将JSON数据映射到我们的Android应用程序中,我们需要创建一个Java类,该类将定义JSON数据的结构。例如,我们要解析一个包含人员信息的JSON数据,我们可以创建一个名为Person的Java类,该类应该包含所有我们需要从JSON数据中提取的数据的字段。 ```java public class Person { private String name; private int age; private boolean isMarried; public Person(String name, int age, boolean isMarried) { this.name = name; this.age = age; this.isMarried = isMarried; } public String getName() { return name; } public int getAge() { return age; } public boolean isMarried() { return isMarried; } } ``` 3. 解析JSON数据 一旦我们创建了类的Java类,我们就可以使用GSON库来解析JSON数据了。假设我们有以下JSON数据: ```java { "name": "张三", "age": 25, "isMarried": false } ``` 接下来,我们可以使用以下代码来将JSON数据映射到我们的Java类中: ```java Gson gson = new Gson(); String jsonString = "{\"name\":\"张三\",\"age\":25,\"isMarried\":false}"; Person person = gson.fromJson(jsonString, Person.class); ``` 在这里,我们首先创建了Gson对象,然后将JSON数据存储为字符串。最后,我们使用Gson对象的fromJson()方法将JSON数据转换为Person对象。 4. 使用解析后的数据 一旦我们成功地解析JSON数据并将其映射到我们的Java类中,我们可以像我们通常使用Java对象一样使用该对象。 ```java String name = person.getName(); int age = person.getAge(); boolean isMarried = person.isMarried(); ``` 这就是在Android Studio解析JSON数据的过程!我们可以将此过程应用于任何JSON数据,并将其映射到我们定义的Java类中。它使我们能够轻松地处理JSON数据,以便更方便地使用Android应用程序!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值