JSON简介
- JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端数据传输和存储中
- JSON 就是一种字符串格式,这种格式无论是在前端还是在后端,都可以很容易的转换成对象,所以常用于前后端数据传递
JSON格式
- JSON由键值对组成,使用大括号 {} 表示对象,每个键值对由键(key)和值(value)组成,键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔
- 值可以是字符串、数字、布尔值(true或false)、对象、数组或null。字符串需要使用双引号 " 括起来,例如 “name”: “John”
示例:
{
"name": "John",
"age": 30,
"isStudent": false,
"address": {
"street": "123 Main St",
"city": "New York"
},
"hobbies": ["reading", "coding", "traveling"]
}
JSON在客户端的使用(JS中JSON语法)
-
JSON的语法
var obj=“{‘属性名’:‘属性值’,‘属性名’:{‘属性名’:‘属性值’},‘属性名’:[‘值1’,‘值1’,‘值3’]}”
-
可以看出,JSON数据被" "包裹起来,所以JSON本质是一个字符串
-
JSON字符串一般用于传递数据,所以字符串中的函数就显得没有意义,在此不做研究
-
通过JSON.parse()方法可以将一个JSON串转换成对象
-
通过JSON.stringify()方法可以将一个对象转换成一个JSON格式的字符串
/* 定义一个JSON串 */
var personStr ='{"name":"张小明","age":20,"girlFriend":{"name":"铁铃","age":23},"foods":["苹果","香蕉","橘子","葡萄"],"pets":[{"petName":"大黄","petType":"dog"},{"petName":"小花","petType":"cat"}]}'
console.log(personStr)
console.log(typeof personStr)
/* 将一个JSON串转换为对象 */
var person =JSON.parse(personStr);
console.log(person)
console.log(typeof person)
/* 获取对象属性值 */
console.log(person.name)
console.log(person.age)
console.log(person.girlFriend.name)
console.log(person.foods[1])
console.log(person.pets[1].petName)
console.log(person.pets[1].petType)
/* 定义一个对象 */
var person={
'name':'张小明',
'age':20,
'girlFriend':{
'name':'铁铃',
'age':23
},
'foods':['苹果','香蕉','橘子','葡萄'],
'pets':[
{
'petName':'大黄',
'petType':'dog'
},
{
'petName':'小花',
'petType':'cat'
}
]
}
/* 获取对象属性值 */
console.log(person.name)
console.log(person.age)
console.log(person.girlFriend.name)
console.log(person.foods[1])
console.log(person.pets[1].petName)
console.log(person.pets[1].petType)
/* 将对象转换成JSON字符串 */
var personStr =JSON.stringify(person)
console.log(personStr)
console.log(typeof personStr)
JSON在服务器端的使用
-
应用反射技术
-
在Java代码中使用JSON通常涉及以下几个方面:生成JSON、解析JSON、与客户端交互和处理JSON数据
-
使用Java中的第三方库(如Jackson、Gson等)可以方便地将Java对象转换为JSON格式的字符串和将JSON字符串解析为Java对象
例如,使用Jackson库可以这样生成JSON:
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(myObject);
- myObject是要转换成json格式的对象
例如,使用Jackson库可以这样解析JSON:
ObjectMapper objectMapper = new ObjectMapper();
MyObject myObject = objectMapper.readValue(json, MyObject.class);
- json是符合MyObject类对象格式的json字符串,MyObject.class利用反射获取MyObject类对象
JSON和Map List Array之间的转换问题
Map
JSON转换为Map:
- 使用Jackson库或其他JSON解析库,可以将JSON字符串解析为Map对象
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;
public class Main {
public static void main(String[] args) throws Exception {
String json = "{\"name\": \"John\", \"age\": 30}";
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> map = objectMapper.readValue(json, Map.class);
System.out.println(map.get("name")); // Output: John
System.out.println(map.get("age")); // Output: 30
}
}
Map转换为JSON:
- 同样使用Jackson库或其他JSON库,可以将Map对象转换为JSON字符串
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws Exception {
Map<String, Object> map = new HashMap<>();
map.put("name", "John");
map.put("age", 30);
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(map);
System.out.println(json); // Output: {"name":"John","age":30}
}
}
List或Array
JSON转换为List或Array:
- 如果JSON字符串表示的是数组,可以将其转换为Java的List或Array
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class JsonToListExample {
public static void main(String[] args) throws Exception {
String json = "[\"apple\", \"banana\", \"cherry\"]";
ObjectMapper objectMapper = new ObjectMapper();
List<String> list = objectMapper.readValue(json, List.class);
System.out.println(list); // Output: [apple, banana, cherry]
}
}
List或Array转换为JSON:
- 使用JSON解析库,可以将Java的List或Array转换为JSON字符串
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
import java.util.List;
public class ListToJsonExample {
public static void main(String[] args) throws Exception {
List<String> list = Arrays.asList("apple", "banana", "cherry");
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(list);
System.out.println(json); // Output: ["apple","banana","cherry"]
}
}