json文件配置结构体数组(java接受json格式参数带数组)

http://www.itjxue.com  2023-01-25 18:42  来源:未知  点击次数: 

如何处理常见的JSON嵌套结构

我们继续之前的话题。很多时候,服务器返回的JSON都不是一个“扁平”的结构,而是包含了各种嵌套,在这一节,我们就来处理如何把各种嵌套的情况,对应到Swift model。

第一种情况,是用对象封装数组,例如,服务器返回了多个视频信息的JSON:

为了把类似这种情况的JSON直接转型成model,我们只要定义下面这样的 struct 就好了:

这里,由于 EpisodeList 和 Episode 都是遵从 Codable 的,因此我们可以直接用之前的方式对JSON解码:

只是这次,对应的Model类型,变成了 EpisodeList 。执行一下,就能在控制台看到下面这样的结果:

第二种情况,服务器还可能直接返回一个数组,而不使用对象封装它:

对这种情况,我们无须声明任何新的类型,只要在解码的时候,指定一个数组类型就好了:

这次,我们就会看到这样的结果:

第三种情况,可以看成是前面两种情况的组合,假设数组中的对象,是通过一个Key索引的:

对于这种情况,数组内的结构,可以用 DictionaryString: Episode 表示,而整个JSON,则是这种 Dictionary 的数组,于是,在解码的时候,我们只要把这个类型传递给它就好了:

执行下,就会看到这样的结果:

在这一节最后,我们结合之前说过的这些情况,看一个更一般的例子,假设我们要给视频播放的页面传递一个包含所有要显示内容的JSON,它看上去是这样的:

为了把这段JSON自动转型成Swift model,我们新建一个 struct :

它对应JSON头部视频信息的部分,这里,由于视频难度属于视频信息的一部分,我们把 EpisodeLevel 定义成了一个内嵌类型。

接下来,JSON的后半段,是系列中每一个视频的具体信息,这种情况我们已经处理过了,这里,我们把之前定义的类型整理一下:

可以看到,我们把 EpisodeType 也变成了 Episode 的内嵌类型。最后,我们定义一个表示页面数据的 struct :

这样, EpisodePage 就完全对应我们上面提到的JSON结构了,接下来,使用用 decode 方法解码就好:

执行一下,就能看到下面这样的结果了:

json是什么文件

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language,?Standard ECMA-262 3rd Edition - December 1999的一个子集。

JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

JSON建构于两种结构,一是“名称/值”对的集合(A?collection?of?name/value?pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash?table),有键列表(keyed?list),或者关联数组?(associative?array)。

二是值的有序列表(An?ordered?list?of?values)。在大部分语言中,它被理解为数组(array)。

扩展资料:?

JSON简要历史

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。

JSON是Douglas Crockford在2001年开始推广使用的数据格式,在2005年-2006年正式成为主流的数据格式,雅虎和谷歌就在那时候开始广泛地使用JSON格式。

参考资料来源:百度百科—json

怎么将json对象添加进json数组中

1、使用原生的解析:

String json = "...";

JSONArray array= new JSONArray(json);

//遍历数组里的值,得到每个独立的对象,然后获取对应的值设置到声明好的对象中,最终创建对象完成后添加到集合中,如我自己代码里的片段:

for (int j = 0; j array.length(); j++) {

obj = array.getJSONObject(j);

Data data = new Data();

data.setThumbnail(obj.getString("thumbnail"));

data.setTitle(obj.getString("title"));

data.setUrl(obj.getString("url"));

mDataList.add(data);

}

2、使用第三方包如Gson,但是这个你得保证你的JSON字符串个z

json配置文件,如何在打开json文件时,缩进和分组,显示标签的分组层次结构(注意,各分组可折叠或伸展)

用记事本就可以打开了。换句话说,任何文本编辑工具都可以打开。

json只是一种约定的格式,一般是给程序读取的。

最常见的是浏览器收藏格式,也可以使用浏览器打开。

JSON配置

根目录有一个 app.json 和 project.config.json,此外在 pages/logs 目录下还有一个 logs.json

JSON的值只能是以下几种数据格式,其他任何格式都会触发报错,例如 JavaScript 中的 undefined。

数字,包含浮点数和整数

字符串,需要包裹在双引号中

Bool值,true 或者 false

数组,需要包裹在方括号中 []

对象,需要包裹在大括号中 {}

Null

还需要注意的是 JSON 文件中无法使用注释,试图添加注释将会引发报错。

配置项细节可以参考文档 小程序的配置 app.json 。

开发工具配置

独立定义每个页面的一些属性,配置项细节可以参考文档 页面配置 。

程序开发中json 存储结构化数据是怎么回事呢?

使用 json 存储结构化数据就是从文件中读写字符串很容易。

1.数值就要多费点儿周折,因为 read() 方法只会返回字符串,应将其传入 int() 这样的函数,就可以将 '123' 这样的字符串转换为对应的数值 123。当你想要保存更为复杂的数据类型,例如嵌套的列表和字典,手工解析和序列化它们将变得更复杂。

好在用户不是非得自己编写和调试保存复杂数据类型的代码,Python 允许你使用常用的数据交换格式 JSON(JavaScript Object Notation)。标准模块 json 可以接受 Python 数据结构,并将它们转换为字符串表示形式;此过程称为 序列化。从字符串表示形式重新构建数据结构称为 反序列化。序列化和反序列化的过程中,表示该对象的字符串可以存储在文件或数据中,也可以通过网络连接传送给远程的机器。

Note

2.JSON 格式经常用于现代应用程序中进行数据交换。许多程序员都已经熟悉它了,使它成为相互协作的一个不错的选择。

如果你有一个对象 x,你可以用简单的一行代码查看其 JSON 字符串表示形式:

json.dumps([1, 'simple', 'list'])

'[1, "simple", "list"]'

dumps() 函数的另外一个变体 dump(),直接将对象序列化到一个文件。所以如果 f 是为写入而打开的一个 文件对象,我们可以这样做:

json.dump(x, f)

为了重新解码对象,如果 f 是为读取而打开的 文件对象:

x = json.load(f)

3.这种简单的序列化技术可以处理列表和字典,但序列化任意类实例为 JSON 需要一点额外的努力。 json 模块的手册对此有详细的解释。

See also

pickle - pickle 模块

4.与 JSON 不同,pickle 是一个协议,它允许任意复杂的 Python 对象的序列化。因此,它只能用于 Python 而不能用来与其他语言编写的应用程序进行通信。默认情况下它也是不安全的:如果数据由熟练的攻击者精心设计, 反序列化来自一个不受信任源的 pickle 数据可以执行任意代码。

(责任编辑:IT教学网)

更多

推荐SQL Server文章