关于JSON的一些总结

2024-09-07 15:32
文章标签 总结 json

本文主要是介绍关于JSON的一些总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、关于JSON

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 
第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词。 
第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海"。 
第三种类型是映射(mapping),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作散列(hash)或字典(dictionary),比如"首都:北京"。 
Json的规格非常简单,只用一个页面几百个字就能说清楚,而且Douglas Crockford声称这个规格永远不必升级,因为该规定的都规定了。 
1) 并列的数据之间用逗号(",")分隔。 
2) 映射用冒号(":")表示。 
3) 并列数据的集合(数组)用方括号("[]")表示。 
4) 映射的集合(对象)用大括号("{}")表示。


二、常见的JSON解析方法

解析JSON数据首先要明确,解析的JSON字符串是属于JSONObject还是JSONArray。

android平台上一般有两种解析技术可供选择:android内置的org.json包和google的开源的gson库。

json已经内嵌在了android中,所以在平时的android开发中可以直接使用org.json来直接进行解析,而使用gson需要加入第三方的库文件。


三、对于常见JSON字符串的举例

对于一个JSON字符串,我们首先需要判断它是属于JSONObject还是JSONArray。如果最外层是由[]所包含的,那么它就是一个JSONArray,相当于是一个JSON数组;如果最外层是由{}所包含的,那么它就是一个JSONObject,就是一个JSON对象。

1、json = {"devid":"1234567800","latitude":"29.4963","longitude":"116.189","postime":"2014-06-10 12:13:00"};

这是最常见的映射关系的JSON字符串,而且也只是一个JSON对象,所以使用org.json和gson都很简单,但是一般来说直接使用org.json更为方便。

                JSONObject jsonObject = new JSONObject(json);String devid = jsonObject.getString("devid");String latitude = jsonObject.getString("latitude");String longitude = jsonObject.getString("longitude");String postime = jsonObject.getString("postime");
2、json =  [{"devid":"1234567800","latitude":"29.4963","longitude":"116.189","postime":"2014-06-10 12:13:00"},{"devid":"1234567832","latitude":"29.4943","longitude":"1161.129","postime":"2014-06-11 12:13:00"}];

可以看出这是一个JSONArray,所以只需要在刚才的代码基础上稍加改动就可以了:

                JSONArray jsonArray = new JSONArray(json);for (int i = 0; i < jsonArray.length(); i++) {JSONObject jsonObject = (JSONObject) jsonArray.opt(i);String devid = jsonObject.getString("devid");String latitude = jsonObject.getString("latitude");String longitude = jsonObject.getString("longitude");String postime = jsonObject.getString("postime");}

3、json = {"data":{"2580":"云南省","3219":"台湾省","35":"河北省","219":"山西省","3314":"澳门特别行政区","18":"天津市","1028":"安徽省","926":"浙江省","1692":"湖北省","1809":"湖南省","2726":"西藏自治区","3026":"青海省","1245":"江西省","2482":"贵州省","3078":"宁夏回族自治区","3106":"新疆维吾尔自治区","1150":"福建省","1946":"广东省","580":"吉林省","2925":"甘肃省","2807":"陕西省","2279":"四川省","3292":"香港特别行政区","650":"黑龙江省","2089":"广西壮族自治区","2240":"重庆市","810":"江苏省","351":"内蒙古自治区","792":"上海市","1":"北京市","465":"辽宁省","1357":"山东省","1515":"河南省","2213":"海南省"},"status":{"errorCode":"","errorDesc":"","succeed":"1"}};

通过分析可以看出来,最外层是一个JSONArray,里面有两个JSONObject,分别是data和status,status里面的就是上面第一个json那样的字符串,很容易解析,但是data中的json字符串就不像我们所见过的那样,所以这里对于data里面的数据解析就要使用一种新的方法了:

JSONObject data = connGet.getJSONObject("data");
Map<String,String> result = new HashMap<String, String>();
Iterator it = data.keys();
while (it.hasNext()) { String key = it.next().toString(); String value = data.getString(key);result.put(key, value);
}

通过迭代的方式,将data中的数据不断的读出来,并放入一个Map集合中,最后所得到的Map集合就是一个一个的JSON对了,只需要遍历Map就可以得到结果。


当然也可以使用Gson来进行解析,也是很容易的。

将data中的数据看作是一个Map,然后再遍历Map就行了


这篇关于关于JSON的一些总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145447

相关文章

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Python中json文件和jsonl文件的区别小结

《Python中json文件和jsonl文件的区别小结》本文主要介绍了JSON和JSONL两种文件格式的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 众所周知,jsON 文件是使用php JSON(JavaScripythonpt Object No