一篇文章弄懂JSON和FastJSON

#一篇文章弄懂JSON和FastJSON

JSON介绍

  • JavaScript Object Notation(JavaScript对象表示法)
  • JSON是轻量级的文本数据交换格式
  • JSON独立于语言,具有自我描述性,更易理解

JSON语法规则

  • 数据由键(key)/值(value)描述,由逗号分隔
  • 大括号代表一个完整的对象,拥有多个键/值对
  • 中括号保存数组,多个对象之间使用逗号分隔

利用JSON存储员工信息:

[
	{
		"empno": 1234,
		"ename": "Ndon",
		"job": "Professor",
		"hiredate": "2015-07-10",
		"salary": "10000",
		"dname": "研发部"
	},
	{
		"empno": 1235,
		"ename": "Mingyueji",
		"job": "Associate Professor",
		"hiredate": "2014-07-10",
		"salary": "100000",
		"dname": "Medicine",
		"customer": [
			{
				"cname": "Iris"
			},
			{
				"cname": "Nick"
			}
		]
	}
]

JavaScript访问JSON对象

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
	var json = [
		{
			"empno": 1234,
			"ename": "Ndon",
			"job": "Professor",
			"hiredate": "2015-07-10",
			"salary": "10000",
			"dname": "研发部"
		},
		{
			"empno": 1235,
			"ename": "Mingdong",
			"job": "Associate Professor",
			"hiredate": "2014-07-10",
			"salary": "100000",
			"dname": "Medicine",
			"customer": [
				{
					"cname": "Iris"
				},
				{
					"cname": "Nick"
				}
			]
		}
	];
	
	for(var i = 0; i< json.length;i++){
		var emp = json[i];
		document.write("<h1>");
		document.write(emp.empno);
		document.write(","+emp.ename);
		document.write(","+emp.job);
		document.write(","+emp.hiredate);
		document.write(","+emp.salary);
		document.write(","+emp.dname);
		document.write("</h1>");
		
		document.write("<h1>");
		if(emp.customer != null){
			for(var j = 0;j<emp.customer.length;j++){
				document.write(emp.customer[j].cname+".")
			}
		}
	}
	

</script>
</head>
<body>

</body>
</html>

JSON与字符串互相转换

  • JSON.parse()方法将字符串转换为JSON对象
  • JSON.stringify()方法将JSON对象转换为字符串

JS中字符串和JSON之间相互转换:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>字符串转JSON</title>
<script type="text/javascript">
	var str = "{\"Class_name\":\"1403\"}";
	var json = JSON.parse(str)
	var str1 = JSON.stringify(json);
	console.log(str)
	console.log(json)
	document.write("My Class:"+ json.Class_name)
	document.write("My new String :"+str1)
	
	var json1 = {}
	json1.Class_name = "五年级2班"
	json1.teacher = "Wuyun"
	json1.floor = "二楼"
	console.log(json1)
</script>
</head>
<body>

</body>
</html>

FastJSON

  • 最新版下载地址:https://search.maven.org/remote_content?g=com.alibaba&a=fastjson&v=LATEST

  • 为什么要用FastJSON? JSON与Java交互

  • Java的JSON工具包还有FastJson、Jackson、 Gson. Json-lb…

  • FastJson是阿里巴巴著名的JSON序列化与反序列工具包

  • FastJson国内拥有大量使用者,拥有API简单,效率高等优点

Debug

在这里插入图片描述

FastJSON中对象序列化与反序列化

Employee.java

package com.bayar.employee;

import java.util.Date;

import com.alibaba.fastjson.annotation.JSONField;

public class Employee {
	private Integer empno;
	private String ename;
	private String job;
	@JSONField(name="入职时间", format="yyyy-MM-dd")
	private Date hiredata;
	private Float salary;
	//某一项无关紧要,不想序列化时用@JSONField(serialize=false)
	@JSONField(serialize=false)
	private String dname;
	public Integer getEmpno() {
		return empno;
	}
	public String getEname() {
		return ename;
	}
	public String getJob() {
		return job;
	}
	public Date getHiredata() {
		return hiredata;
	}
	public Float getSalary() {
		return salary;
	}
	public String getDname() {
		return dname;
	}
	public void setEmpno(Integer empno) {
		this.empno = empno;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public void setHiredata(Date hiredata) {
		this.hiredata = hiredata;
	}
	public void setSalary(Float salary) {
		this.salary = salary;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	
}

JSON和对象之间互转

FastJsonExample.java

package com.bayar.employee;

import java.util.Calendar;

import com.alibaba.fastjson.JSON;

public class FastJSONexample {
	public static void main(String[] args) {
		Employee employee = new Employee();
		employee.setEmpno(10000);
		employee.setEname("Bayar");
		employee.setJob("Front-End");
		employee.setDname("Techno");
		Calendar c = Calendar.getInstance();
		c.set(2021, 7, 20, 18, 42);
		employee.setHiredata(c.getTime());
		//FastJSON中提供了JSON对象,完成对象与JSON字符串的互相转换
		String json = JSON.toJSONString(employee);
		System.out.println(json);
		//JSON字符串转对象
		Employee emp = JSON.parseObject(json, Employee.class);
		System.out.println(emp.getEname());
	}
}

FastJSON中对象数组序列化与反序列化

操作列表

package com.bayar.employee;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;

public class FastJSONExample2 {
	public static void main(String[] args) {
		List empList = new ArrayList();
		for(int i = 0;i<=100;i++) {
			Employee emp = new Employee();
			emp.setEmpno(1000+i);
			emp.setEname("员工"+i);
			empList.add(emp);
		}
		//toJSONString即可操作单一对象,也可操作列表
		String json = JSON.toJSONString(empList);
		System.out.println(json);
		//JSON转成对象数组
		List<Employee> emps = JSON.parseArray(json, Employee.class);
		for (Employee employee : emps) {
			System.out.println(employee.getEmpno()+":"+employee.getEname());
		}
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
list转json对象使用FastJSON可以通过以下步骤完成: 1. 导入FastJSON库并创建一个空的JSON对象。 2. 遍历list,将list中的每个元素转换为JSON对象。 3. 将转换后的JSON对象添加到前面创建的空JSON对象中。 4. 最后将整个JSON对象转换为json字符串。 代码示例: import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = List.of("item1", "item2", "item3"); JSONObject jsonObject = new JSONObject(); JSONArray jsonArray = new JSONArray(); for (String item : list) { JSONObject itemObject = new JSONObject(); itemObject.put("item", item); jsonArray.add(itemObject); } jsonObject.put("list", jsonArray); String jsonString = jsonObject.toJSONString(); System.out.println(jsonString); } } 以上代码将会将List<String> list转换为一个JSON对象,该对象中包含一个名为"list"的JSON数组,该数组包含了list中的每个元素的JSON对象。 希望以上解答能对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [list转json字符串 FastJSON 调用](https://download.csdn.net/download/trouble0914/85414476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [fastjson list转json字符串_一篇文章教你轻松使用fastjson](https://blog.csdn.net/weixin_39804329/article/details/110245434)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值