jason概述

转载自 爱编程的大丙

JSON(JavaScrip Object Notation) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的 js 规范) 的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

Json 是一种数据格式,和语言无关,在什么语言中都可以使用 Json。基于这种通用的数据格式,一般处理两方面的任务:

组织数据(数据序列化),用于数据的网络传输
组织数据(数据序列化),写磁盘文件实现数据的持久化存储(一般以.json 作为文件后缀);

Json 中主要有两种数据格式:Json 数组Json 对象,并且这两种格式可以交叉嵌套使用,下面依次介绍下这两种数据格式: 

1. Json 数组


Json 数组使用 [] 表示,[] 里边是元素,元素和元素之间使用逗号间隔,最后一个元素后边没有逗号,一个 Json 数组中支持同时存在多种不同类型的成员,包括:整形、 浮点、 字符串、 布尔类型、 json数组、 json对象、 空值-null。由此可见 Json 数组比起 C/C++ 数组要灵活很多。

Json 数组中的元素数据类型一致

// 整形
[1,2,3,4,5]
// 字符串
["luffy", "sanji", "zoro", "nami", "robin"]


Json 数组中的元素数据类型不一致

[12, 13.34, true, false, "hello,world", null]


Json 数组中的数组嵌套使用

[
    ["cat", "dog", "panda", "beer", "rabbit"],
    ["北京", "上海", "天津", "重庆"],
    ["luffy", "boy", 19]
]


Json 数组和对象嵌套使用

[
    "luffy":{
    	"age":19,
    	"father":"Monkey·D·Dragon",
    	"grandpa":"Monkey D Garp",
    	"brother":"Portgas D Ace",
    	"brother":"Sabo"
    }
]


2. Json 对象


Json 对象使用 {} 来描述,每个 Json 对象中可以存储若干个元素,每一个元素对应一个键值对(key:value 结构),元素和元素之间使用逗号间隔,最后一个元素后边没有逗号。对于每个元素中的键值对有以下细节需要注意:

键值(key)必须是字符串,位于同一层级的键值不要重复(因为是通过键值取出对应的 value 值)
value 值的类型是可选的,可根据实际需求指定,可用类型包括:整形、 浮点、 字符串、 布尔类型、 json数组、 json对象、 空值-null。
使用 Json 对象描述一个人的信息:

{
    "Name":"Ace",
    "Sex":"man",
    "Age":20,
    "Family":{
        "Father":"Gol·D·Roger",
        "Mother":"Portgas·D·Rouge",
        "Brother":["Sabo", "Monkey D. Luffy"]
    },
    "IsAlive":false,
    "Comment":"yyds"
}


3. 注意事项


通过上面的介绍可用看到,Json 的结构虽然简单,但是进行嵌套之后就可以描述很复杂的事情,在项目开发过程中往往需要我们根据实际需求自己定义 Json 格式用来存储项目数据。

另外,如果需要将 Json 数据持久化到磁盘文件中,需要注意一个问题:在一个 Json 文件中只能有一个 Json 数组或者 Json 对象的根节点,不允许同时存储多个并列的根节点。下面举例说明:

错误的写法

// test.json
{
    "name":"luffy",
    "age":19
}
{
    "user":"ace",
    "passwd":"123456"
}


错误原因:在一个 Json 文件中有两个并列的 Json 根节点(并列包含 Json 对象和 Json 对象、Json 对象和 Json 数组、Json 数组和 Json 数组),根节点只能有一个。

正确的写法

// test.json
{
    "Name":"Ace",
    "Sex":"man",
    "Age":20,
    "Family":{
        "Father":"Gol·D·Roger",
        "Mother":"Portgas·D·Rouge",
        "Brother":["Sabo", "Monkey D. Luffy"]
    },
    "IsAlive":false,
    "Comment":"yyds"
}


在上面的例子中通过Json对象以及Json数组的嵌套描述了一个人的身份信息,并且根节点只有一个就是Json对象,如果还需要使用Json数组或者Json对象描述其他信息,需要将这些信息写入到其他文件中,不要和这个Json对象并列写入到同一个文件里边,切记!!!

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jason 是一个 Go 语言用来处理 JSON 文档的开发包。Jason 的强项是解析 JSON 而不是生成 JSON。示例代码:root, err := jason.NewFromReader(res.Body) root.Get("name").String() root.Get("age").Number() root.Get("verified").Boolean() root.Get("education").Object() root.Get("friends").Array() //读取嵌套内容 root.Get("person", "name").String() root.Get("person", "age").Number() root.Get("person", "verified").Boolean() root.Get("person", "education").Object() root.Get("person", "friends").Array() //判断数值是否存在 root.Has("person", "name") root.Get("person", "name").Exists() //数值校验 root.Get("name").IsString() root.Get("age").IsNumber() root.Get("verified").IsBoolean() root.Get("education").IsObject() root.Get("friends").IsArray() root.Get("friends").IsNull() //循环 for _, friend := range person.Get("friends").Array() {   name := friend.Get("name").String()   age := friend.Get("age").Number() }完整例子:package main import (   "github.com/antonholmquist/jason"   "log" ) func main() {   exampleJSON := `{     "name": "Walter White",     "age": 51,     "children": [       "junior",       "holly"     ],     "other": {       "occupation": "chemist",       "years": 23     }   }j, _ := jason.NewObjectFromBytes([]byte(exampleJSON))  log.Println("name:", j.Get("name").String())   log.Println("age:", j.Get("age").Number())   log.Println("occupation:", j.Get("other", "occupation").String())   log.Println("years:", j.Get("other", "years").Number())   for i, child := range j.Get("children").Array() {     log.Printf("child %d: %s", i, child.String())   } } 标签:Jason
### 回答1: LabVIEW是一款由美国国家仪器公司(National Instruments)开发的图形化编程语言和开发环境。它具有易学易用的特点,适用于各种科学实验、数据采集、控制系统、机器视觉等领域的应用。 LabVIEW的主要特点是其图形化的编程界面。用户可以通过拖拽和连接不同的图标来构建程序,而无需编写传统的代码。这种图形化的方式使得程序的编写更加直观和容易理解,尤其适合那些非专业的程序员或初学者使用。 对于Jason这个名字,我不确定与LabVIEW是否有直接关联。然而,Jason这个名字可能指的是一种数据交换格式,即JSON(JavaScript Object Notation)。JSON是一种轻量级的数据交换格式,易于理解和编写,并且易于阅读和解析。 LabVIEW与JSON可以进行互操作,即通过LabVIEW读取和解析JSON数据,或者将LabVIEW生成的数据转换为JSON格式。这在实践中非常有用,在与其他软件或硬件系统进行数据交互时,JSON是一种常用的数据格式。 总结来说,LabVIEW是一种易于学习和使用的图形化编程语言和开发环境,可用于各种科学实验、控制系统和数据采集应用。与JSON格式相比,JSON可以用于数据交换和实现与其他软件或硬件系统的互操作。 ### 回答2: LabVIEW (Laboratory Virtual Instrument Engineering Workbench) 是一种用于仪器控制、数据采集和数据分析的编程语言和开发环境。它提供了直观的图形化编程界面,使得用户可以通过简单的拖拽和连接图标来搭建程序。 LabVIEW具有广泛的应用领域,特别是在实验室和测试环境中。它可以与各种硬件设备(如传感器、测量仪器和执行器)进行通信,并从中获取数据,实现自动化控制。 Jason是一个基于LabVIEW的全面开发平台,它提供了丰富的工具和功能,用于开发和部署各种应用程序。Jason支持多种实时操作系统和嵌入式硬件平台,使得LabVIEW可以在不同的环境中运行和部署。 Jason还提供了许多强大的功能,如数据存储和处理、图像和信号处理、科学计算、通信和网络等。此外,Jason还支持与其他编程语言和开发工具的集成,使得LabVIEW可以与其他系统进行无缝连接。 总的来说,LabVIEW Jason是一个功能强大的开发平台,用于设计和实现各种实验室和测试应用。它的直观图形化编程界面使得开发变得更加容易,而丰富的工具和功能提供了一种全面的解决方案。无论是初学者还是专业人士,LabVIEW Jason都能满足各种需求,并为用户提供强大的开发和部署能力。 ### 回答3: LabVIEW是一种图形化编程语言,具有强大的数据处理和控制功能。它采用了一种称为G语言的编程语言,使用类似于流程图的方式进行编程。 Jason是一种数据交换格式,常用于在网络上传输和存储数据。它以简洁和易读的方式表示数据,是一种通用的数据格式。 结合LabVIEW和Jason,可以实现数据的高效处理和传输。LabVIEW可以将实时采集的数据转换为Jason格式,以便在网络上传输或存储。同时,LabVIEW还可以接收和解析来自网络的Jason数据,并进行相应的处理。 使用LabVIEW和Jason,可以实现多种应用。例如,可以将实验室仪器的数据以Jason格式传输到远程计算机进行实时监测和分析。还可以将传感器数据以Jason格式传输到云计算平台进行大数据分析和处理。 总而言之,LabVIEW和Jason是两种功能强大的工具,结合使用可以实现数据的高效处理和传输,适用于各种科学实验和工程应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值