使用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;
}
}