Android json功能解析

1. 简介

  JAVAScript Object Notation是一种轻量级的数据交换格式具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持)。
 JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。JSON作为数据是目前网络中主流的数据传输格式之一,应用十分广泛,说是使用率达到99%一点也不勉强。

1.1. JSON支持的数据类型

  JSON里面的数据是以一种键值对的方式存在 (“key”:“value”)中值的类型可以是下面数据类型中的任意一种:
(1)数字(整数或浮点数)
(2)逻辑值(true 或 false)
(3)字符串(在双引号中)
(4)数组(在方括号中)
(4)函数
(6)对象(在大括号中)
(7)null

1.2.JSON语法规则

  JSON的语法规则非常的简单,就是使用大括号’{}’,中括号’[]’,逗号’,’,冒号’:’,双引号’“”’。嵌套对象、数组、字符串、数字、布尔值或空值。

2. json文件

2.1. 新建json文件

  new-Folder-Assets Folder
在这里插入图片描述

2.1. 读取 json文件

  读取 json文件分为assets文件夹读取、raw文件夹读取

2.1.1. 读取json文件工具类

public class JsonHelper {/*** 读取assets中的文件*/public static String readAssetsFile(Context context, String path) {String result = "";try {// read file content from fileStringBuilder sb = new StringBuilder("");InputStreamReader reader = new InputStreamReader(context.getResources().getAssets().open(path));BufferedReader br = new BufferedReader(reader);String str;while ((str = br.readLine()) != null) {sb.append(str);}result = sb.toString();br.close();reader.close();} catch (IOException e) {e.printStackTrace();}return result;}/*** 读取raw中的文件*/public static String readRawFile(Context context, int resourceId) {StringBuilder builder = new StringBuilder();BufferedReader reader = new BufferedReader(new InputStreamReader(context.getResources().openRawResource(resourceId)));try {for (String line = reader.readLine(); line != null; line = reader.readLine()) {builder.append(line).append("\n");}} catch (Exception e) {throw new RuntimeException(e);}return builder.toString();}
}

2.2. 读取assts json文件

在这里插入图片描述

    /***assets获取json*/private void getAssetsJson() {String jsonStr = JsonHelper.readAssetsFile(this,"json/applyJson.json");Log.e("assets获取json:",jsonStr);}

2.2. 读取raw json文件

在这里插入图片描述

    /*** raw获取json*/private void getRawJson() {String jsonStr = JsonHelper.readRawFile(this, R.raw.video_list);Log.e("raw获取json:",jsonStr);}

3. 解析json字符串

3.1. 数据源

private void initData() {parseObjectStr = "{\"msg\":\"操作成功\",\"code\":0,\"name\":\"网格员测试账号6\"," +"\"photo\":\"\",\"sessionId\":\"52312e93-c0d5-4a27-9425-2202212e178f\"" +",\"dept\":{\"searchValue\":null,\"createBy\":null,\"createTime\":null," +"\"updateBy\":null,\"updateTime\":null,\"remark\":null,\"params\":{}," +"\"deptId\":13850,\"parentId\":9449,\"gridId\":13850,\"ancestors\":\"" +"0,100,8720,9448,9449\",\"deptName\":\"潍坊市-高密市-密水街道-东关社区居委会" +"-东关社区居委会网格一\",\"orderNum\":\"0\",\"leader\":null,\"phone\":null," +"\"email\":null,\"status\":\"0\",\"delFlag\":null,\"parentName\":" +"\"潍坊市-高密市-密水街道-东关社区居委会\",\"deptCode\":null,\"deptGrade\"" +":\"4\",\"deptType\":null,\"isCgorg\":\"1\",\"lng\":null,\"lat\":null," +"\"address\":null,\"location\":null,\"component\":null,\"goNum\":null," +"\"gridHcount\":null,\"gridArea\":null,\"provinceId\":null,\"cityId\":null," +"\"countyId\":null,\"streetId\":null,\"communityId\":null,\"gridLevel\":null}}".replaceAll("\\/", "/");parseArrayStr = ("{\"hy\":[{\"acc\":\"0536010000067\",\"pas\":\"888888\"," +"\"wgyzh\":\"CS6\",\"region\":\"3707\"}],\"ip\":\"218.59.142.38\"}").replaceAll("\\/", "/");}

3.2. 解析object

 /*** 解析Object*/private void parseObject() {try {JSONObject jsonObject = new JSONObject(parseObjectStr);if (Integer.parseInt(jsonObject.get("code").toString()) == 0) {String sessionId = jsonObject.getString("sessionId");Log.e(TAG, "=sessionId=" + sessionId);JSONObject dept = new JSONObject(jsonObject.getString("dept"));String deptName = dept.getString("deptName");Log.e(TAG, "=deptName=" + deptName);}} catch (JSONException e) {e.printStackTrace();}}

在这里插入图片描述

3.3. 解析array

/*** 解析Array*/private void parseArray() {try {JSONObject object = new JSONObject(parseArrayStr);String ip = object.getString("ip");JSONArray array = object.getJSONArray("hy");for (int i = 0; i < array.length(); i++) {JSONObject obj = (JSONObject) array.get(i);String wgname = obj.getString("wgyzh");Log.e(TAG, "=wgname=" + wgname);}} catch (JSONException e) {e.printStackTrace();}}

在这里插入图片描述

3.4. 封装object(一)

    /*** @return* @desc 封装Object*/private String getPackageObject1() {JSONObject jsonObject = new JSONObject();try {jsonObject.put("userName", "userName");jsonObject.put("deptName", "deptName");jsonObject.put("deptNickName", "deptNickName");jsonObject.put("deptId", "deptId");jsonObject.put("parentId", "parentId");Log.e(TAG, "=jsonObject=" + jsonObject.toString());return jsonObject.toString();} catch (JSONException e) {e.printStackTrace();}return "";}}

在这里插入图片描述

3.4. 封装object(二)

 /*** @return* @desc 封装Object*/private String getPackageObject2() {JSONObject jsonObject = new JSONObject();try {jsonObject.put("userName", "userName");jsonObject.put("deptName", "deptName");jsonObject.put("deptNickName", "deptNickName");jsonObject.put("deptId", "deptId");jsonObject.put("parentId", "parentId");JSONObject jsonObject2 = new JSONObject();jsonObject.put("fee", jsonObject2);jsonObject2.put("feeName", "费用名称");jsonObject2.put("feeValue", "费用值");Log.e(TAG, "=jsonObject=" + jsonObject.toString());return jsonObject.toString();} catch (JSONException e) {e.printStackTrace();}return "";}

在这里插入图片描述

3.5. 封装array

 /*** @return* @desc 封装Array*/private String getPackageArray() {JSONObject jsonObject = new JSONObject();try {JSONArray jsonArray = new JSONArray();jsonObject.put("feelist", jsonArray);for (int i = 0; i < 4; i++) {JSONObject jsonObject2 = new JSONObject();jsonObject2.put("feeName", "费用名称" + i);jsonObject2.put("feeValue", "费用值" + i);jsonArray.put(jsonObject2);}Log.e(TAG, "=jsonObject=" + jsonObject.toString());return jsonObject.toString();} catch (JSONException e) {e.printStackTrace();}return "";}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/621340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第 380 场周赛 解题报告 | 珂学家 | 数位DP 二分 + 字符串Hash

前言 整体评价 感觉T3更难些&#xff0c;T4太直接了&#xff0c;一般的KMP/StringHash基本就够用了。 上周T4出数位DP&#xff0c;估计是为T3打了一个铺垫。 A. 最大频率元素计数 思路: 模拟即可 class Solution {public int maxFrequencyElements(int[] nums) {Map<Int…

qt5.14.2配置opencv4.5.5

使用环境&#xff1a;windows&#xff0c;opencv4.5.5&#xff0c;qt5.14.2&#xff0c;msvc编译器 这里的opencv文件是已经编译好了&#xff0c;在qt工程中配置就可使用&#xff0c;编译器得是msvc才行&#xff0c;MinGW不管用。 资源地址&#xff1a;https://download.csdn.…

【深度学习每日小知识】Computer Vision 计算机视觉

计算机视觉是人工智能的一个领域&#xff0c;涉及算法和系统的开发&#xff0c;使计算机能够解释、理解和分析来自周围世界的视觉数据。这包括从静态图像到视频流甚至 3D 环境的一切。 使用对象检测和特征提取等方法&#xff0c;计算机视觉本质上需要从视觉输入中提取有用信息…

2023 IoTDB Summit:天谋科技高级开发工程师苏宇荣《汇其流:如何用 IoTDB 流处理框架玩转端边云融合》...

12 月 3 日&#xff0c;2023 IoTDB 用户大会在北京成功举行&#xff0c;收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题&#xff0c;多位学术泰斗、企业代表、开发者&#xff0c;深度分享了工业物联网时序数据库 IoTDB 的技术创新…

华为手机备份全过程(保姆级问题解决方案)

手机备份 前言主体信息备份一、关闭windows安全中心的内存完整性二、开启 USB 调试&#xff0c;尝试使用 ADB 连接三、开始备份 微信备份QQ备份写在最后遗留问题 前言 我的手机是荣耀 20&#xff0c;虽然不是华为&#xff0c;但系统还是鸿蒙的系统&#xff08;毕竟那阵荣耀还是…

reactNative0.71版本的使用

开发环境配置 参考reactNative 官网 版本选中0.71 打包配置 1. IOS 打开项目 -> 进入ios目录->执行命令 pod install ->项目名称.xcworkspace -> 使用xcode打开->配置证书 证书配置截图如下 &#x1f4a1;tips&#xff1a;TARGETS目录下会有多个文件&#x…

【ArcGIS Pro微课1000例】0057:未安装所需的Microsoft驱动程序

文章目录 一、错误提示二、解决办法1. Excel转表2. Excel转csv一、错误提示 ArcGIS Pro添加Excel数据时,提示未安装所需的Microsoft驱动程序,如下图所示: 二、解决办法 1. Excel转表 在选择输入表时,可能会提示未安装所需的 Microsoft 驱动程序。 这是因为要在 ArcGIS P…

为什么光刻要用黄光

光刻是集成电路&#xff08;IC或芯片&#xff09;制造中的重要工艺之一。简单来说&#xff0c;它是通过使用光掩膜和光刻胶在基板上复制电路图案的过程。 基板将涂覆硅二氧化层绝缘层和光刻胶。光刻胶在被紫外光照射后可以容易地用显影剂溶解&#xff0c;然后在腐蚀后&#xf…

控制网页的灰度显示

1.代码&#xff1a; 普通网页 <style>html {filter: grayscale(100%);}</style> 或是:webkit内核浏览器写法 <style>html {-webkit-filter: grayscale(100%)}</style> 2.说明&#xff1a; grayscale(amount) :进行灰度转换。 amount转换值的大小&…

Embeddings: What they are and why they matter

embeddings 是什么意思https://simonwillison.net/2023/Oct/23/embeddings/推荐原因&#xff1a;GPT 模型的基础是一种叫做 embeddings 的技术&#xff0c;用来将文本转换成向量&#xff0c;从而可以计算出文本之间的相似度。这篇文章详细地介绍了embeddings及应用 Embeddings…

Java多线程并发篇----第十三篇

系列文章目录 文章目录 系列文章目录前言一、Semaphore 信号量二、Semaphore 与 ReentrantLock 区别三、可重入锁(递归锁)四、公平锁与非公平锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,…

数据库与SQL

数据库与SQL 学习链接数据库关系型数据库管理系统&#xff08;RDBMS&#xff09; SQLSQL介绍SQL类型SQL 基础语言学习创建表&#xff08;create table&#xff09;语法 数据类型SQL最常用的数据类型 学习链接 基础篇&#xff1a;数据库 SQL 入门教程 数据库 用于存储数据 存放…

对接苹果CMS芒果影视APPV1.0(附安装教程+源码支持多端)内置采集脚本

目录 概述1. 演示效果1.1 视频演示1.2 图文演示1.2.1 首页1.2.2 专题页1.2.3 搜索1.2.4 观影 2. 支持功能3. 插件和框架4. 部署方法4.1 后端4.1.1 准备工具4.1.2创建站点4.1.3 上传后端代码到服务器4.1.4 导入数据库4.1.5 配置数据库信息4.1.6访问后台管理系统 4.2 前端4.2.1 准…

【开发日记】IDEA“找不到或无法加载主类”问题

记录一个研究了两个小时的“玄学”问题找不到或无法加载主类。 ​1、问题 使用IDEA启动SpringBoot项目显示找不到或无法加载主类。 2、解决经历 尝试了很多种解决方法都没有解决&#xff0c;下面是我网上查询后尝试的一些方法。这些方法我都没有解决问题&#xff0c;是因为…

css3背景与渐变

css3背景与渐变 前言背景颜色background-color基础知识背景图片background-image基础知识背景图片的重复模式 背景尺寸background-sizecontain和cover是两个特殊的background-size的值 背景裁切 background-clip背景固定 background-attachment背景图片位置 background-positio…

Redis数据结构学习笔记

图文主要参考小林Coding的图解redis数据结构 redis为什么快 除了它是内存数据库&#xff0c;使得所有的操作都在内存上进⾏之外&#xff0c;还有⼀个重要因素&#xff0c;它实现的数据结构&#xff0c;使 得我们对数据进⾏增删查改操作时&#xff0c;Redis 能⾼效的处理。 数…

【学术精选】NLP可投的顶会信息(近期截稿)

顶级会议推荐 引言 国际学术会议是一种学术影响度较高的会议&#xff0c;它具有国际性、权威性、高知识性、高互动性等特点&#xff0c;其参会者一般为科学家、学者、教师等。具有高学历的研究人员把它作为一种科研学术的交流方式&#xff0c;能够为科研成果的发表和对科研学术…

文心一言 VS 讯飞星火 VS chatgpt (178)-- 算法导论13.4 1题

一、用go语言&#xff0c;在执行 RB-DELETE-FIXUP 之后&#xff0c;证明&#xff1a;树根一定是黑色的。 文心一言&#xff1a; 在证明 RB-DELETE-FIXUP 之后&#xff0c;树根一定是黑色的的过程中&#xff0c;我们首先需要理解红黑树的性质。红黑树是一种自平衡二叉搜索树&a…

简单的天天酷跑小游戏实现

初级函数实现人物,背景,小乌龟的移动 #include <graphics.h> #include <iostream> #include <Windows.h> #include "tools.h" #include <mmsystem.h> #include <conio.h> #include <time.h>//时间头文件 #include <cstdlib&g…

2024最新最全【DDOS教学】,从零基础入门到精通,看完这一篇就够了

1、互联网安全现状 随着网络世界的高速发展&#xff0c;各行业数字化转型也在如火如荼的进行。但由于TCP/IP网络底层的安全性缺陷&#xff0c;钓鱼网站、木马程序、DDoS攻击等层出不穷的恶意攻击和高危漏洞正随时入侵企业的网络&#xff0c;如何保障网络安全成为网络建设中的刚…