JSON与Java对象互相转换

本文介绍如何使用Gson库实现Java对象与JSON格式之间的相互转换,包括将Java对象集合转换为JSON并保存到文件中,以及从JSON文件读取内容并转换回Java对象列表的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Gson来进行JSON与Java对象互相转换

需要的相关jar包:http://download.youkuaiyun.com/detail/prstaxy/8168611

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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

public class Convert
{
	public static void main(String[] args)
	{
		//toJson();
		fromJson();
	}

	public static void toJson()//JAVA对象集合转成JSON格式,并写入文件
	{
		Gson gson = new Gson();
		List<Person> persons = new ArrayList<Person>();
		for (int i = 0; i < 5; i++)
		{
			Person p = new Person();
			p.setName("nm" + i);
			p.setAge(i * 5);
			persons.add(p);
		}
		//String str = gson.toJson(persons);

		System.out.println("Convert Java object to JSON format and save to file");

		try (FileWriter writer = new FileWriter("f:\\gson.json"))
		{
			writer.write(gson.toJson(persons));
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}

	public static void fromJson()//从JSON文件转换成JAVA对象的列表
	{
		Gson gson = new Gson();
		List<Person> persons = new ArrayList<Person>();
		
		System.out.println("Read JSON from file, convert JSON string back to object");

		try
		{
			BufferedReader reader = new BufferedReader(new FileReader("f:\\gson.json"));
			persons = gson.fromJson(reader, new TypeToken<List<Person>>(){}.getType());
			//persons = gson.fromJson(jsonStr, new TypeToken<List<Person>>(){}.getType());//也可以从JSON格式的字符串转换</span>
			//如果不是数组形式而是单个对象,可用 jsonObj = gson.fromJson(reader, Person.class);
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		
		for(int i=0;i<persons.size();++i)
		{
			System.out.println(persons.get(i));
		}
	}
}

class Person//需要转换成JSON格式的类
{
	private String name;
	private int age;

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public int getAge()
	{
		return age;
	}

	public void setAge(int age)
	{
		this.age = age;
	}

	@Override
	public String toString()
	{
		return name + ":" + age;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值