JSON

JSON

json的定义

JSON:JavaScript 对象表示法(JavaScript Object Notation), 一种轻量级的数据交换格式,易于人

阅读和编写,也易于机器解析和生成。用来描述数据结构,它是基于纯文本的数据格式,是一种轻量级

的数据交换格式。广泛应用于服务端与客户端的数据交互。

JSON 是存储和交换文本信息的语法,类似 XML。

JSON 采用完全独立于语言的文本格式,也使用了类似于 C 语言家族的习惯(包括 C, C++, C#,

Java, JavaScript, Perl, Python…)这些特性使 JSON 成为理想的数据交换语言。

JSON 是一个新的人类可读(human readable)的数据格式,在过去几年中已变得非常受欢迎,尤其

是在 web 开发中。

JSON可以是普通的键值对{key:value},也可以是键值对的数组[{key1:value1},{key2:value2}]

还可以两者嵌套使用

JSON格式

a)对象:“名称/值”对的集合A collection of name/value pairs)

不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典 (dictionary),

哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)。

b)、数组:值的有序列表(An ordered list of values)

在大多数语言中,它被理解为数组(array)、矢量(vector),列表(list)或者序列(sequence)。经过对

象、数组 2 种结构就可以组合成复杂的数据结构了。

集体形式:

Json 以 key-value 的形式存储数据

Key 的取值 为 String 类型;

Value 的取值为 String,boolean,Number,数组,Object,null;

Json串以{开始,以}结尾;

Json 串中数组是以[开始,以]结尾;

Json 串中Object是以{开始,以}结尾;

解析方式:
Gson

Gson 是一个 Google 提供的一个 Java 库,可用于将 Java 对象转换为 JSON 表示。它也可以被用来

将 JSON 字符串转换成一个等效的 Java 对象。

提供易于使用的机制如 toString() 和构造函数(工厂方法)将 Java 转换为 JSON,反之亦然。允许自

定义表示对象,支持任意复杂的对象,生成紧凑和可读性的 JSON 输出

jar包下载地址:https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5

gson可以分别实现json和对象、list、map之间的相互转化

代码如下:

package com.json;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.pojo.User;

@WebServlet(value="/json1")
public class TestGson extends HttpServlet{
	
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		Gson gson = new Gson();
		
		System.out.println("-------------对象转json----------------");
		User user1 = new User("张三",21,1);
		
		String json1 = gson.toJson(user1);
		System.out.println(json1);
		System.out.println("-------------json转对象----------------");
		User user2 = gson.fromJson(json1,user1.getClass());
		System.out.println(user2);
		System.out.println();
		
		
		System.out.println("-------------list转json----------------");
		List<User> list = new ArrayList<>(); 
		User u1 = new User("张三",21,1);
		User u2 = new User("李四",28,0);
		User u3 = new User("王五",37,1);
		list.add(u1);
		list.add(u2);
		list.add(u3);
		
		String json3 = gson.toJson(list);
		System.out.println(json3);
		System.out.println("-------------json转list----------------");
		List<User> list2 = gson.fromJson(json3,new TypeToken<List<User>>(){}.getType());
		System.out.println(list2);
		System.out.println();
				
		System.out.println("-------------map转json----------------");
		Map<String,Object> map = new HashMap<>();
		User user3 = new User("唐家三少",38,1);
		map.put("id", 6);
		map.put("user", user3);
		String json4 = gson.toJson(map);
		System.out.println(json4);
		System.out.println("-------------json转map----------------");
		Map<String,Object> maps = gson.fromJson(json4,new TypeToken<Map<String,Object>>(){}.getType());
		for(Entry<String,Object> entry :maps.entrySet())
		System.out.println(entry.getKey()+"--"+entry.getValue());
	}
}
运行结果:

-------------对象转json----------------
{"username":"张三","age":21,"gender":1}
-------------json转对象----------------
User [username=张三, age=21, gender=1]

-------------list转json----------------
[{"username":"张三","age":21,"gender":1},{"username":"李四","age":28,"gender":0},{"username":"王五","age":37,"gender":1}]
-------------json转list----------------
[User [username=张三, age=21, gender=1], User [username=李四, age=28, gender=0], User [username=王五, age=37, gender=1]]

-------------map转json----------------
{"id":6,"user":{"username":"唐家三少","age":38,"gender":1}}
-------------json转map----------------
id--6.0
user--{username=唐家三少, age=38.0, gender=1.0}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值