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>
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数据取出来。取出指定数据。
🥭🥭依赖配置
最后同步的时候会把需要的东西自己在仓库下载,有时候网络不好可能下载同步失败。
依赖
implementation('com.squareup.okhttp3:okhttp:4.9.0')
现在应该已经到了4.14.X
🥭🥭网络权限
<uses-permission android:name="android.permission.INTERNET" />
在加入完成之后最后也同步一下。Sync Now。
最后送上镇宅之宝,JSON常用解析方式
在刷题之前先介绍一下牛客。Leetcode有的刷题牛客都有,除此之外牛客里面还有招聘(社招和校招)、一些上岸大厂的大佬的面试经验。
牛客是可以伴随一生的编程软件(完全免费),从学校到社会工作,时时刻刻你都可以用到
,感兴趣的可以去注册试试可以伴随一生的刷题app
觉得有用的可以给个三连,关注一波!!!带你了解更多的Android小知识
来源地址:https://blog.csdn.net/qq_46906413/article/details/125607346
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341