• Android的JSON解析(上)


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


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

    在这里插入图片描述

    🥭🥭JSON数据解析

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

    activity_main

    
    <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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    在这里插入图片描述

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

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

    Android 提取Json中指定数据


    🥭🥭依赖配置

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

    依赖

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

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


    🥭🥭网络权限

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

    在这里插入图片描述

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

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

    在这里插入图片描述


    在刷题之前先介绍一下牛客。Leetcode有的刷题牛客都有,除此之外牛客里面还有招聘(社招和校招)、一些上岸大厂的大佬的面试经验。 牛客是可以伴随一生的编程软件(完全免费),从学校到社会工作,时时刻刻你都可以用到感兴趣的可以去注册试试可以伴随一生的刷题app







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

  • 相关阅读:
    ss-2.子项目互相访问(order80 -> payment8001)
    【AWS SMB】关于AWS 中小型企业 (SMB) 能力介绍及注意事项
    VivifyTech - hackmyvm
    Paas 相关介绍
    【Web项目实战】基于STOMP的聊天室【高仿QQ界面,世界频道,私聊,头像】
    搞定ESD(二):ESD干扰机理分析
    【C++】基础知识点回顾 中:函数重载、引用和内联函数
    HTTPS的加密流程
    ts中高阶类型的理解
    leetcode 刷题 log day 48(打家劫舍问题
  • 原文地址:https://blog.csdn.net/qq_46906413/article/details/125607346