您的位置:首页 > 理论基础 > 计算机网络

Android初级开发(九)——网络交互—解析JSON格式数据

2017-08-28 18:06 756 查看
一、前言

首先还是在web服务器(我这里用的是tomcat)新建json文本



文本内容



在浏览器上预览一下



二、JSONObject方法

1、我们还是在OkHttp的基础上修改代码,布局不变

MainActivity.java代码如下

public class MainActivity extends AppCompatActivity {

Button sendRequest;
TextView responseText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
responseText = (TextView) findViewById(R.id.response_text);
sendRequest = (Button) findViewById(R.id.send_request);
sendRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
try{
OkHttpClient client = new OkHttpClient();
//模拟器是连接不到localhost的,10.0.2.2对于模拟器来说就是电脑本机的IP地址
Request request = new Request.Builder().url("http://10.0.2.2:8080/zwj/zwj_jsonTest.json").build();
Response response = client.newCall(request).execute();
String responseData = response.body().string();
//得到服务器返回的数据后,调用parseXMLWithPull()方法解析服务器返回的数据
parseJSONWithJSONObjct(responseData);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
});
}

private void parseJSONWithJSONObjct(String jsonData) {
try{
JSONArray jsonArray =  new JSONArray(jsonData);
for(int i = 0;i < jsonArray.length();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
String id = jsonObject.getString("id");
String name = jsonObject.getString("name");
String version = jsonObject.getString("version");
Log.d("MainActivity","id is"+ id);
Log.d("MainActivity","name is"+ name);
Log.d("MainActivity","version is"+ version);
}
}catch (Exception e){
e.printStackTrace();
}
}

}


2、看一下日志



三、GSON方法

1、添加库依赖



2、新增一个实体类,我们命名为APP

public class App {

private String id;
private String name;
private String version;

public String getId() {
return id;
}

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

public String getName() {
return name;
}

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

public String getVersion() {
return version;
}

public void setVersion(String version) {
this.version = version;
}
}


3、修改MainActivity.java

public class MainActivity extends AppCompatActivity {

Button sendRequest;
TextView responseText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
responseText = (TextView) findViewById(R.id.response_text);
sendRequest = (Button) findViewById(R.id.send_request);
sendRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
try{
OkHttpClient client = new OkHttpClient();
//模拟器是连接不到localhost的,10.0.2.2对于模拟器来说就是电脑本机的IP地址
Request request = new Request.Builder().url("http://10.0.2.2:8080/zwj/zwj_jsonTest.json").build();
Response response = client.newCall(request).execute();
String responseData = response.body().string();
//得到服务器返回的数据后,调用parseXMLWithPull()方法解析服务器返回的数据
parseJSONWithGSON(responseData);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
});
}

private void parseJSONWithGSON(String jsonData) {
Gson gson = new Gson();
List<App> appList = gson.fromJson(jsonData, new TypeToken<List<App>>(){}.getType());
for (App app:appList){
Log.d("MainActivity","id is"+app.getId());
Log.d("MainActivity","name is"+app.getName());
Log.d("MainActivity","version is"+app.getVersion());
}
}

}


4、查看日志

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 网络 json