json解析

鸿蒙next json解析 ArkUI 带你玩转 arkts json解析 相信很多同学再开发过程中都会遇到json解析的处理,不管是跟服务端交互 或者是读取本地的json 都会遇到json解析 那么正好今天有空正好讲一下鸿蒙next里面的json解析arkts 里面的提供丰富的api来解析我们的json ,对比其他端来说也是相对比较简单 对于复杂的json 我们可以定义一个 interface 或者一个class 来配合我们的,JSON.parse 来进行解析复杂的json数据 当然这个生成数据模型model 我们团队有开发一个插件,这样也大大方便我们开发。 阅读详情

android开发中,与服务器交互80%是通过json方式传输数据,JSON 也是基于纯文本的数据格式,JSON具有跨平台的优势,相对xml,json解析起来更方便,简单,解析数据所消耗的流量也会比xml少,而且json有一些好的第三方库文件,已为开发者封装好了,


JSON语法规则:

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON 名称/值对

JSON 数据的书写格式是:名称/值对

名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:比如;"firstName":"John"

JSON 值

JSON 值可以是:
  • 数字 (整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

比如值是基本类型

 

{"city":"Beijing","street":" Chaoyang Road ","postcode":100025} 

{}代表是一个对象,这些都是简单的key/value形式,如果用对象来表示的话:

public class Info {
	public String city;
	public String street;
	public int postcode;
}

在这个javabean中并没有使用get,set方法,因为get,set方法是使用反射做的,比较慢,这是json最简单的方式,key/value形式,我们知道json有三种种方式,一种是key/value,key/Object,key/array,现在讲讲key/Object形式

比如:

{"name":"Michael","address":{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}} 

这里有2个对象,一个是最外面的,一个是address:它也是一个对象,我们说了{}就代表一个对象,因此 首先写里面的对象,然后再写外面的对象,代码如下:

Info.java

package com.example.josn;

public class Info {
	public String city;
	public String street;
	public int postcode;
}

Person.java

/**
 * {"name":"Michael","address":{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}} 
 * @author carpool
 *
 */
public class Person {
		public String name;
		public Info info;
}

json解析代码:

</pre><pre class="java" name="code">String jsonString = getJsonString();
		try {
			JSONObject jb = new JSONObject(jsonString);
			Person p = new Person();
			Info info  = new Info();
			info.city = jb.getJSONObject("address").getString("city");
			info.street = jb.getJSONObject("address").getString("street");
			info.postcode = jb.getJSONObject("address").getInt("postcode");
			p.info = info;
			p.name = jb.getString("name");
		} catch (JSONException e) {
			e.printStackTrace();
		}


现在还剩下一个种形式json,就是key/array,比如:

{
    "people": [
        {
            "firstName": "Brett",
            "lastName": "McLaughlin",
            "email": "aaaa"
        },
        {
            "firstName": "Jason",
            "lastName": "Hunter",
            "email": "bbbb"
        },
        {
            "firstName": "Elliotte",
            "lastName": "Harold",
            "email": "cccc"
        }
    ]
}

我们知道{}代表的是一个对象,[]代表的是数组,表示数组中存放了很多对象,对象之间用逗号(,)分开,

这个用对象封装一般有二种形式,一是直接用集合把解析的对象存储起来,二是用一个类封装一个集合,集合的对象就是上面所解析的对象即可

第一种方式:

People.java

public class People {
	public String firstName;
	public String lastName;
	public String email;
}


解析:

String jsonString = getJsonString();//json串
		try {
			JSONObject jb = new JSONObject(jsonString);
			JSONArray ja = jb.getJSONArray("people");
			ArrayList<People> ps = new ArrayList<People>();
			for(int i=0;i<ja.length();i++){
				People p = new People();
				p.email = ja.getJSONObject(i).getString("email");
				p.firstName = ja.getJSONObject(i).getString("firstName");
				p.lastName = ja.getJSONObject(i).getString("lastName");
				ps.add(p);
			}
		} catch (JSONException e) {
			e.printStackTrace();
		}


第二种写法:

public class Multiplepeople {
	public List<People> peoples;
}

String jsonString = getJsonString();//json串
		try {
			JSONObject jb = new JSONObject(jsonString);
			JSONArray ja = jb.getJSONArray("people");
			Multiplepeople multiplepeople = new Multiplepeople();
			List<People> ps = new ArrayList<People>();
  			for(int i=0;i<ja.length();i++){
				People p = new People();
				p.email = ja.getJSONObject(i).getString("email");
				p.firstName = ja.getJSONObject(i).getString("firstName");
				p.lastName = ja.getJSONObject(i).getString("lastName");
				ps.add(p);
			}
  			multiplepeople.peoples =ps;
		} catch (JSONException e) {
			e.printStackTrace();
		}
json就到了,多练习就会了!







代表的是key为address,值是个对象,






Android JSON 解析 在 Android 中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,用于客户端与服务器之间的数据传输。Android 提供了多种方式来处理 JSON 数据,本文章介绍了 Android JSON 解析以及 Gson 的使用,和其他第三方库的说明。 阅读详情

相关推荐

复杂的json字符串解析(真实案例)

工作中遇到的真实情况,比较复杂的json解析方法,关键在于理解。注意事项方法中注释已经介绍的很清楚了,希望各位朋友采纳!

string解析为json的几种方式

1.比较古老的方法: 1 function strToJson(str){ 2 var json = eval('(' + str + ')'); 3 return json; 4 } 2.比较常用的方法: 1 function strToJson(str){ 2 return (new Function("return " + str)...

ab1001001的博客 235

【Pytorch】DCGAN实战(三):二次元动漫头像生成

文章目录1.实现效果2.环境配置2.1Python2.2Pytorch、CUDA2.3Python IDE3.具体实现3.1数据预处理(data.py)(1)导入包(2)定义数据类3.2模型Generator,Discriminator,权重初始化(model.py)(1)导入包(2)Generator(3)Discriminator(4)权重初始化3.3网络训练(net.py)(1)导入包(2)创建类3.4 主函数(main.py)(1)导入文件(2)定义超参数(3)实例化(4)进行训练4.训练过程4.1

qq_44031210的博客 4916

JsonString的解析

JsonString ,List&lt;HashMap&lt;String,String&gt;&gt;类型的解析。 个人笔记,复制即用,如发现错误请指正。 /** *json String(&lt;List&lt;HashMap&lt;String,String&gt;&gt;&gt;类型)的解析 * @param pics List&lt;HashMap&lt;String, St...

百块富翁的博客 3612

【小白教程】本地部署VLM-R1模型(使用Docker)

通过Docker本地部署VLM-R1大模型,详细教程。

m0_69855053的博客 2937

零代码构建AI智能体:COZE可视化工作流实战指南

AI智能体(AI Agent)是当前人工智能领域的重要发展方向,它通过模块化设计和工作流驱动,使大语言模型从被动对话转向主动执行。其核心原理在于将复杂的任务分解为可规划、可执行的步骤,并调用外部工具(插件)完成闭环。这一技术价值在于显著降低了自动化流程的开发门槛,让非程序员也能构建实用的数字助手。典型的应用场景包括智能客服、内容自动生成、数据分析和跨系统业务流程自动化。本文以COZE平台为例,深入解析如何通过其直观的可视化界面和丰富的插件生态,像搭积木一样快速搭建如“早安简报生成器”等实用智能体,并分享指令

467

java解析String类型的Json数据

数据格式 String s = "{\n" + " \"code\":0,\n" + " \"data\":[\n" + " {\n" + " \"data\":{\n" + " \"111\":[\n" + "

PPX、小布的博客 2008

【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)

【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)

weixin_57514792的博客 1103

Java如何解析JSON字符串(复杂json解析详解)

1、什么是JSON字符串? 我们在理解json的时候,不必要过分的扣json到底是哪几个字母的简称,要了解本质。 JSON的本质就是以字符串,字符串几乎所有的系统都支持,所以json的兼容性好。 ...

雾林小妖的博客 3万+

Informer:比Transformer更有效的长时间序列预测

目录 AAAI 2021最佳论文:比Transformer更有效的长时间序列预测 Background Why attention Methods:the details of Informer Solve_Challenge_1:最基本的一个思路就是降低Attention的计算量,仅计算一些非常重要的或者说有代表性的Attention即可,一些相近的思路在近期不断的提出,比如Sparse-Attention,这个方法涉及了稀疏化Attention的操作,来减少Attention计算量,然后涉及的

To be a better man 1万+

3、基于视觉的智能分拣机:原理、算法与应用

本文介绍了一种基于视觉的智能分拣系统,利用树莓派、相机模块和多种检测算法实现低成本、高精度的物体分拣。系统支持颜色、形状和尺寸三种检测方式,准确率达99%,广泛适用于制造业、农业和物流等领域。文章详细阐述了各检测算法原理、测试结果及系统优化方向,并探讨了其实际应用案例与未来发展前景。

mqtt6iot的博客 236

数据解析之JSON

JSON

zsp45212的专栏 585

BAT007:批量为当前目录下的文件夹添加前缀或后缀

摘要:编写批处理程序,实现批量为当前目录下的文件夹添加前缀或后缀。

qq_31762031的博客 4052

JSON的三种解析方式

JSON的三种解析方式 一、什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。 JSON就是一串字符串 只不过元素会使用特定的符号标注。 {} 双括号表示对象 [] 中括号表示数组 "" 双引号内是属性或值 : 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象...

匆匆那年的专栏 5万+

CODESYS数据处理合集(高低字节/ 字/浮点数/位)

VAR_INPUT//字节0//字节1END_VARVAREND_VAR。

RXXW_Dor的博客 354

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Qt构建JSON及解析JSON

一般来讲C++类和对象在java中是无法直接直接使用的,因为压根就不是一个规则。但是他们在内存中都是二进制表示的,所以把C++的类和对象转成二进制再按照java的规则解析这段二进制代码就可以做到C++描述的东西在java中复现了。

a1937194471的博客 5426

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C#解析JSON

全称“JavaScript Object Notation(JavaScript对象表示法)”,JSON 是存储和交换文本信息的语法。[ {"id" : 2 , "name" : "星河爆破" , "number" : 999 } , {"id" : 3 , "name" : "九星连珠" , "number" : 9 } , {"id" : 4 , "name" : "一语成谶" , "number" : 999 } ]学习JSON基础教程在线JSON解析及格式化验证网站。

weixin_43046974的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

JSON解析详解

JSON解析详解 1.定义一串测试JSON { "retCode":0, "retMSg":"成功", "data":[ { "name":"李雷", "id":"001", "score":{ "Chinese":"80", "Math":"95" }, "schoolInfo": [ { "School_name": "清华"

Clozzz的博客 2万+

JavaScript解析JSON对象及JSON字符串

JavaScript解析JSON对象是常用功能之一。此处我们要明确JSON对象和JSON字符串的区别?否则会给我们的解析带来困扰。主要实现如下功能:1、JavaScript解析JSON字符串和JSON对象?2、JavaScript解析JSON数组?3、JavaScript解析来自springboot通过@ResponseBody返回的JSON字符串?4、禁用eval后如何替代eval?JSON对象的本质是一个对象,对象中属性的值可以通过object.name的方式访问。

雾林小妖的博客 1678

JSON解析

JSON是一种轻量级的数据交换格式,它采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言,易于人的阅读和编写,同时也有利于机器解析和生成,并有效地提升网络传输效率。JSON的具体使用方法。

m0_68041576的博客 1万+

Qt解析JSON

Qt解析JSON的类QJsonDocument、QJsonObject、QJsonArray

qq_44723937的博客 3945

Java、JS解析JSON对象、JSON数组

一:利用alibaba.fastjson解析JSONObject、JSONArray package com.test1; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class TestJsonArray { public static void main(String[] args) { // json

jike11231的博客 8659
上一篇: java转义字符
下一篇: android 项目中使用对话框统一封装
zhoushenxian
博客等级 码龄12年 453粉丝 549原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值