手动JSON数据解析

article/2025/11/11 0:40:04

1.将json格式的字符串{}转化为JAVA对象

//第一步:获取或创建Json数据String json = "{\n" +"            \"id\":2,\"name\":\"小龙虾\",\n" +"            \"price\":12.3,\n" +"            \"imagePath\":\"https://192.168.10.165:8080/L05 Server/images/f1.jpg\"\n" +"        }";//第二步:解析json数据try {//JSONObject(json)将json字符串解析为json对象JSONObject jsonObject = new JSONObject(json);//optXXX方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值//但是getString方法会出现空指针异常的错误//int id = jsonObject.getInt("id");int id1 = jsonObject.optInt("id");String name = jsonObject.optString("name");double price = jsonObject.optDouble("price");String imagePath = jsonObject.optString("imagePath");shopBean = new ShopBean(id1, name, price, imagePath);//封装java对象} catch (JSONException e) {e.printStackTrace();}//第三步:显示数据tv_native_original.setText(json);//显示原始数据tv_native_last.setText(shopBean.toString());//转换后数据

2.将json格式的字符串[]转化为JAVA对象的List

//第一步:获取或创建Json数据String json = "[\n" +"    {\n" +"        \"id\":1,\n" +"        \"name\":\"小龙虾1\",\n" +"        \"price\":12.3,\n" +"        \"imagePath\":\"https://192.168.10.165:8080/f1.jpg\"\n" +"    },\n" +"    {\n" +"        \"id\":2,\n" +"        \"name\":\"小龙虾2\",\n" +"        \"price\":22.3,\n" +"        \"imagePath\":\"https://192.168.10.165:8080/f2.jpg\"\n" +"    },\n" +"]";//第二步:解析json数据List<ShopBean> list = new ArrayList<>();try {JSONArray jsonArray = new JSONArray(json);for (int i = 0; i < jsonArray.length(); i++) {JSONObject jsonObject = jsonArray.getJSONObject(i);if (jsonObject != null){int id = jsonObject.optInt("id");String name = jsonObject.optString("name");double price = jsonObject.optDouble("price");String imagePath = jsonObject.optString("imagePath");shopBean = new ShopBean(id,name,price,imagePath);list.add(shopBean);}}} catch (JSONException e) {e.printStackTrace();}//第三步:显示数据tv_native_original.setText(json);//显示原始数据tv_native_last.setText(list.toString());//转换后数据

3.复杂json数据的解析

 //第一步:获取或创建Json数据String json = "{\n" +"    \"data\":{\n" +"        \"count\":5,\n" +"        \"items\":[\n" +"            {\n" +"                \"id\":45,\n" +"                \"title\":\"坚果\"\n" +"            },\n" +"            {\n" +"                \"id\":46,\n" +"                \"title\":\"炒货\"\n" +"            }\n" +"        ]\n" +"    },\n" +"    \"rs_code\":\"1000\",\n" +"    \"rs_msg\":\"success\"\n" +"}";//封装Java对象DataInfo dataInfo = new DataInfo();//第二步:解析json数据try {JSONObject jsonObject = new JSONObject(json);//第一层解析JSONObject object = jsonObject.optJSONObject("data");String rs_code = jsonObject.optString("rs_code");String rs_msg = jsonObject.optString("rs_msg");//第一层封装dataInfo.setRs_code(rs_code);dataInfo.setRs_msg(rs_msg);DataInfo.DataDTO dataBean = new DataInfo.DataDTO();dataInfo.setData(dataBean);//第二层解析int count = object.optInt("count");JSONArray items = object.optJSONArray("items");//第二层数据的封装dataBean.setCount(count);List<DataInfo.DataDTO.ItemsDTO> itemsBean = new ArrayList<>();dataBean.setItems(itemsBean);//第三层解析for (int i = 0; i < items.length(); i++) {if (items != null){JSONObject jsonObject1 = items.optJSONObject(i);int id = jsonObject1.optInt("id");String title = jsonObject1.optString("title");//第三层数据的封装DataInfo.DataDTO.ItemsDTO itemsDTO = new DataInfo.DataDTO.ItemsDTO();itemsDTO.setId(id);itemsDTO.setTitle(title);itemsBean.add(itemsDTO);}}} catch (JSONException e) {e.printStackTrace();}//第三步:显示数据tv_native_original.setText(json);tv_native_last.setText(dataInfo.toString());

4.特殊json数据解析

//第一步:获取或创建Json数据String json = "{\n" +"    \"code\":0,\n" +"    \"list\":{\n" +"        \"0\":{\n" +"            \"aid\":\"8900789\",\n" +"            \"author\":\"春江水暖鸭先知\",\n" +"            \"coins\":188,\n" +"            \"copyright\":\"Copy\",\n" +"            \"create\":\"2022-04-11 16:30\"\n" +"        },\n" +"        \"1\":{\n" +"            \"aid\":\"8900788\",\n" +"            \"author\":\"清明时节雨纷纷\",\n" +"            \"coins\":189,\n" +"            \"copyright\":\"Copy\",\n" +"            \"create\":\"2022-04-11 16:40\" \n" +"        }\n" +"    }\n" +"}";//创建封装的java对象FilmInfo filmInfo = new FilmInfo();//第二步:解析json数据try {JSONObject jsonObject = new JSONObject(json);//第一层解析int code = jsonObject.optInt("code");JSONObject list = jsonObject.optJSONObject("list");//第一层封装filmInfo.setCode(code);List<FilmInfo.FilmBean> lists = new ArrayList<>();filmInfo.setList(lists);//第二层解析for (int i = 0; i < list.length(); i++) {JSONObject jsonObject1 = list.optJSONObject(i + "");if (jsonObject1 != null){String aid = jsonObject1.optString("aid");String author = jsonObject1.optString("author");int coins = jsonObject1.optInt("coins");String copyright = jsonObject1.optString("copyright");String create = jsonObject1.optString("create");//第二层数据封装FilmInfo.FilmBean filmBean = new FilmInfo.FilmBean();filmBean.setAid(aid);filmBean.setAuthor(author);filmBean.setCoins(coins);filmBean.setCopyright(copyright);filmBean.setCreate(create);lists.add(filmBean);}}} catch (JSONException e) {e.printStackTrace();}//第三步:显示数据tv_native_original.setText(json);tv_native_last.setText(filmInfo.toString());

完整demoXizhongName/JSON (github.com)https://github.com/XiZhongName/JSON


http://chatgpt.dhexx.cn/article/tFY8D5rq.shtml

相关文章

【Python爬虫与数据分析】爬虫Json数据解析

目录 一、Json文件数据解析 二、Json数据包解析获取图片资源 三、Json数据包解析获取视频资源 一、Json文件数据解析 json字符串&#xff1a;通常类似python数据类型中的列表和字典的结合&#xff0c;也可能是单独的列表或者字典格式&#xff0c;通常可以通过json模块的函数…

Json格式数据解析

一、简介 XML这种数据格式。XML的特点是功能全面&#xff0c;但标签繁琐&#xff0c;格式复杂。在Web上使用XML现在越来越少&#xff0c;取而代之的是JSON这种数据结构。 JSON是JavaScript Object Notation的缩写&#xff0c;它去除了所有JavaScript执行代码&#xff0c;只保…

JSON解析

#粤嵌星计划&#xff0c;粤嵌我来了# #粤嵌星计划&#xff0c;粤嵌我来了# 1、什么是JSON &#xff08;1&#xff09;JSON&#xff08;Java Script Object Notation&#xff09;是一种轻量级的数据交换语言&#xff0c;以文本字符串为基础&#xff0c;且易于让人阅读。&#x…

内网穿透原理解析

在互联网信息时代的今天&#xff0c;经常会听到外网连接。而与外网所相对应的&#xff0c;是一种内部网络&#xff0c;很多的家庭或者公司利用内部网络来进行多台电脑之间的资源共享&#xff0c;其中所用到的技术就是内网穿透技术&#xff0c;但却有很多的人对这种技术并不了解…

内网穿透原理概要

详细原理的解析 https://blog.csdn.net/xinpz/article/details/82732217 运行原理流程图 什么是内网穿透? 内网穿透是我们在进行网络连接时的一种术语&#xff0c;也叫做NAT穿透&#xff0c;即在计算机是局域网内的时候&#xff0c;外网与内网的计算机的节点进行连接时所需…

内网穿透内容讲解

内网穿透又叫端口映射&#xff0c;用一句最简单的话来讲就是&#xff1a;将你的计算机所连接的私有网络映射到公网上&#xff0c;别人通过你给的域名或ip即可访问你本地的服务。具体的原理可参照百度百科 这么做可以实现各大厂商的云服务器&#xff08;阿里云&#xff0c;腾讯云…

内网穿透你真的了解吗?

前言 内网穿透作为程序员常用的调试手段之一&#xff0c;我们可以通过在个人电脑上运行花生壳或者 frp 等方式&#xff0c;让他人访问我们本地启动的服务&#xff0c;而且这种访问可以不受局域网的限制&#xff0c;当我们使用ngrok,frp等开源框架时&#xff0c;你是否有好奇过…

Ngrok内网穿透

Ngrok一款内网穿透工具&#xff0c;它可以将本地部署的Web应用能够让公网环境直接访问到。ngrok是一个反向代理&#xff0c;通过在公共端点和本地运行的Web服务器之间建立一个安全的通道&#xff0c;实现内网主机的服务可以暴露给外网。所以它提供了一个能够在公网安全访问内网…

大白话告诉你内网穿透原理和验证

内网穿透到底干啥的这里不做详述&#xff0c;这篇文章主要是讲这玩意怎么做的 分析 网上有很多原理图&#xff0c;但是说实话鄙人天资愚钝没咋看懂&#xff0c;在网上疯狂百度和个人的验证之后&#xff0c;得出如下简图 其实很简单 想让我们内网的服务能被外网访问到&#x…

frp内网穿透原理及配置应用

1 Frp介绍 frp 是一个专注于内网穿透的高性能的反向代理应用&#xff0c;支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 frp 项目官网 https://github.com/fatedier/frp 中文文档 https://github.com/fat…

内网穿透原理,以及用花生壳实现内网穿透

在做自学项目部署nginx的时候&#xff0c;nginx部署在阿里云服务器上&#xff0c;项目在本地&#xff0c;阿里云的nginx无法访问到本地的ip&#xff0c;所以需要做一下内网穿透。记录一下 什么是内网穿透&#xff1f; 内网和外网的概念&#xff1a; 内网&#xff1a;即所说的局…

内网穿透原理和实现

什么是内网穿透 作者&#xff1a;匿名用户 链接&#xff1a;https://www.zhihu.com/question/63098230/answer/1929852198 希望对你们更易懂要知道这个的意思&#xff0c;需要先来点前菜 1、地球上的电脑设备等要实现通信&#xff0c;都需要有个IP地址才可以实现。 2、IP地址…

内网穿透原理和实现思路介绍

内网穿透技术&#xff0c;简单理解就是将内网的服务映射到公网中&#xff0c;这样可以随时随地访问。 那什么是内网&#xff1f;什么是公网&#xff1f;先从这个基本概念来简单介绍吧 1. 公网、内网和外网 首先声明&#xff0c;公网、内网和外网这几个概念&#xff0c;不是专…

内网穿透工具frp原理和使用教程

内网穿透&#xff08;Port Forwarding&#xff09;是将公网上的IP地址映射到内部网络中的一台计算机的某个端口上&#xff0c;以便外部网络可以访问该计算机中运行的应用程序。内网穿透技术可以通过一些开源工具来实现&#xff0c;其中比较常用的是frp。在本文中&#xff0c;我…

内网穿透原理

前言 内网穿透一般在家庭用户下NAS设备在经常折腾&#xff0c;实际上企业云服务就是典型的内网穿透&#xff0c;只不过方式原理有点不同&#xff0c;家庭网络因为宽带的上传限制和没有公网IP&#xff0c;难度大于企业宽带。实际上内网穿透就是反向代理&#xff0c;域名解析&am…

内网穿透的实现和原理解析

需求场景: 基于微信平台开发服务号&#xff0c;本地移动端测试时&#xff0c;需要在微信平台注册测试号&#xff0c;然后填写接口配置信息&#xff0c;此信息需要你有自己的服务器资源&#xff0c;填写的URL需要正确响应微信发送的Token验证。如何能让外网访问到本地服务器呢&…

MacBook M1 Idea集成SVN

1.检查是否安装SVN svn —version2.检查是否安装了brew brew -v3.安装 brew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)” speed4.记住安装路径 5.配置国内镜像源HOMEBREW BOTTLE 6.svn安装前需要执行 按照/usr/local路径…

IntelliJ IDEA上svn分支管理和使用

IntelliJ IDEA上svn分支管理和使用 从Subversion下载trunk下的代码 选择项目创建分支 右键 Subversion --> branch or Tag … 选择Repository Location:需要创建的项目 选择Any Location 分支的位置和名字 详细查看截图 切换到分支 选择项目右键Subversion --> Update …

vscode / idea 使用SVN及查看历史记录

一、vscode使用 SVN 1、在vscode插件中心搜索svn 进行安装&#xff08;我这里已经安装完毕了&#xff09; 注意&#xff1a;插件安装成功&#xff0c;需要重新启动软件。 安装成功后会出现如下的图标&#xff1a; 2、桌面右键使用SVN Checkout… 来检出远程库的代码&#xf…

IDEA之配置SVN

最近在公司的开发项目过程中&#xff0c;发现有关idea2020的svn配置方法都参差不齐&#xff0c;所以整理了有关idea2020整合svn的步骤&#xff1b; 目录 一、SVN配置1.1 下载SVN1.2 安装SVN1.3 配置SVN 二、常见问题2.1 Warning:java: 源值1.5已过时 一、SVN配置 1.1 下载SVN…