Android的JSON解析[转]

113 阅读2分钟

🍖🍖 作者 : 不良使
🍖🍖🍖🍖 潜力创作新星 华为云享专家
🍖🍖🍖🍖🍖 Python+Android
🍖🍖🍖🍖🍖🍖 博客记录学习的思路,项目和错误,寻找志同道合的朋友
🍖🍖🍖🍖🍖🍖🍖 如果觉得有帮助记得一键三连 ┗|`O′|┛ 嗷~~


JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

在这里插入图片描述

🥭🥭JSON数据解析

Android里面一个很重要的方面就是接受后端接口数据,解析JSON字符串。已经解析数据了,那么依赖和网络权限应该都已经开了,我们直入主题。没有去单独写接口,下面我们以okhttp的同步请求进行讲解。写完了想了想还是把依赖和权限操作加在后面

activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是一个TextView"/>
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="getSync"
        android:text="get同步请求" />

</LinearLayout>

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.JsonReader;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import org.jetbrains.annotations.NotNull;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private OkHttpClient okHttpClient;
    private TextView mTv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTv = findViewById(R.id.tv);

        okHttpClient = new OkHttpClient();
    }

    // todo 同步请求
    public void getSync(View view) {
        new Thread() {
            @Override
            public void run() {
                // todo  https://www.httpbin.org/get?a=1&b=2
                Request request = new Request.Builder().url("https://www.wanandroid.com/banner/json").get().build();
                //准备好请求的call对象
                Call call = okHttpClient.newCall(request);
                try {
                    Response response = call.execute();
                    ResponseBody sdata = response.body();
                    Log.e(TAG, "getSync: " + sdata);
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }.start();
    }
}

在这里插入图片描述

如果照常操作你会发现出现的都是类似于对象的玩意,根本不是自己想要的。不要慌,我们string()一下就可以 了,如下图所示。只需要在response.body()后面加一个string()即可其他代码都不用变,去试试吧

在这里插入图片描述
下面再来个更酷的,把解析过的JSON数据取出来。取出指定数据。

Android 提取Json中指定数据


🥭🥭依赖配置

最后同步的时候会把需要的东西自己在仓库下载,有时候网络不好可能下载同步失败。

依赖

implementation('com.squareup.okhttp3:okhttp:4.9.0')

现在应该已经到了4.14.X
在这里插入图片描述


🥭🥭网络权限

<uses-permission android:name="android.permission.INTERNET" />

在这里插入图片描述

在加入完成之后最后也同步一下。Sync Now。

最后送上镇宅之宝,JSON常用解析方式

在这里插入图片描述








觉得有用的可以给个三连,关注一波!!!带你了解更多的Android小知识

本文转自 blog.csdn.net/qq_46906413…,如有侵权,请联系删除。