目录
4-2.WebView支持JavaScript与不支持的区别
14.网络编程及Internet应用(二)
2.解析JSON格式数据
2-1.JSON简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,其语法简洁,不仅易于阅读和编写,而且也易于机器的解析和生成。
JSON通常由两种数据结构组成,一种是对象 (“名称/值”形式的映射),另一种是数组(值的有序列表)。ISON 没有变量或其他控制,只用于数据传输。
◆对象
在JSON中,可以使用下面的语法格式来定义对象。
{“属性1”:属性值1,“属性2”:属性值2......“属性n”:属性值n}
◎属性1~属性n:用于指定对象拥有的属性名。
◎属性值1~属性值n:用于指定各属性对应的属性值,其值可以是字符串、数字、布尔值(true/false)、null、 对象和数组。
例如,定义一个保存名人信息的对象,可以使用下面的代码:
{
"name" :"扎克伯格",
"address": "United States New York",
"wellknownsaying" :"当你有使命,它会让你更专注”
}
◆数组
在JSON中,可以使用下面的语法格式来定义对象。
{"数组名":[
对象1,对象2......,对象n
]}
◎数组名:用于指定当前数组名。
◎对象1~对象n:用于指定各数组元素,它的值为合法的JSON对象。例如,定义一个保存名人信息的数组,可以使用下面的代码:
{"famousPerson" :[
{"name":"扎克伯格","address":"美国","wellknownsaying":" 当你有使命,它会让你更专注"},
{"name":"马云","address":"中国","wellknownsaying":"心中无敌者,无敌于天下"}
]}
2-2.解析JSON数据
在Android的官网中提供了解析JSON数据的JSONObject和JSONArray对象。其中,JSONObject用于解析JSON对象;JSONArray用于解析JSON数组。
例:
MainActivity.java
package com.example.analysisofjsondata;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
private TextView step,step1,time,time1,heat,heat1,km,km1;
private Handler handler;
private String result="";//显示内容
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar=getSupportActionBar();
actionBar.hide();
step=findViewById(R.id.main_tv1);
time=findViewById(R.id.main_tv2);
heat=findViewById(R.id.main_tv3);
km=findViewById(R.id.main_tv4);
step1=findViewById(R.id.main_tv5);
time1=findViewById(R.id.main_tv6);
heat1=findViewById(R.id.main_tv7);
km1=findViewById(R.id.main_tv8);
handler=new Handler(){//解析返回的JSON数组并显示
@Override
public void handleMessage(@NonNull Message msg) {
//解析返回的JSON串数据并显示
TextView[][] textViews={
{step,time,heat,km},{step1,time1,heat1,km1}};
try {
JSONArray jsonArray=new JSONArray(result