JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等),这些特性使JSON成为理想的数据交换语言。
JSON的基本结构有两种:对象(Object)和数组(Array),对象是由键值对组成的无序集合,键是字符串,值可以是任意数据类型,数组是由有序的值组成的集合,每个值的类型可以不同。
1、对象
对象的表示形式为:
{ "key1": "value1", "key2": "value2", ... }
key
是字符串,value
可以是任意数据类型。
{ "name": "张三", "age": 30, "isStudent": false, "courses": ["语文", "数学", "英语"] }
2、数组
数组的表示形式为:
[value1, value2, ...]
[1, 2, 3, 4, 5]
3、嵌套结构
JSON支持嵌套结构,即对象和数组中可以包含其他对象和数组。
{ "students": [ { "name": "张三", "age": 18, "courses": ["语文", "数学", "英语"] }, { "name": "李四", "age": 19, "courses": ["物理", "化学", "生物"] } ] }
4、JSON解析和生成库
为了方便地处理JSON数据,许多编程语言都提供了相应的JSON解析和生成库,以下是一些常见编程语言的JSON库:
- Python:json
模块(内置)和simplejson
库(第三方)
- JavaScript:JSON
对象(内置)和xml2js
库(第三方)
- Java:org.json
库(第三方)和Gson
库(第三方)
- PHP:json_encode()
和json_decode()
函数(内置)和SimpleXMLElement
类(内置)和SnakeYAML
库(第三方)
- C#:Newtonsoft.Json
库(第三方)和System.Text.Json
命名空间(内置)和Json.NET
库(第三方)和DataContractJsonSerializer
类(内置)和JsonConvert
类(第三方)和Json.NET
库(第三方)和JsonSerializerSettings
类(内置)和JsonReader
类(内置)和JsonWriter
类(内置)和JsonDocument
类(内置)和JsonPropertyNameAttribute
类(内置)和JsonIgnoreAttribute
类(内置)和JsonExtensionDataAttribute
类(内置)和JsonConverterAttribute
类(内置)和JsonObjectAttribute
类(内置)和JsonArrayAttribute
类(内置)和JsonValueKindAttribute
类(内置)和DefaultValueHandlingAttribute
类(内置)和NullValueHandlingAttribute
类(内置)和ReferenceLoopHandlingAttribute
类(内置)和MissingMemberHandlingAttribute
类(内置)和ObjectCreationHandlingAttribute
类(内置)和`ObjectCreationHandlingAttribute.ReplaceOnCreatePropertyNotFoundExceptionHandlingBehavior.ThrowOrIgnorePropertyNotFoundExceptionsDuringDeserializationBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNonPublicMembersWhenSerializingBehavior.IncludeNon