使用Gson直接把JSO数据转换成Java对象
public Name parserJSON(String data){
Gson gson=new Gson();
Name name = gson.fromJson(in, Name.class);//生成对象
return name;
}
使用Gson直接把JSON数组数据转换成Java对象
public List parserJSON(String data){
Gson gson=new Gson();
TypeToken<List> typeToken=new TypeToken<List>(){};
List list= gson.fromJson(in, typeToken.getType());
return list;
}
JSON和XML比较:
- 1.JSON和XML的数据可读性基本相同
- 2.JSON和XML同样拥有丰富的解析手段
- 3.JSON相对于XML来讲,数据体积更小
- 4.JSON与JavaScript的交互更加方便
- 5.JSON对数据的描述性比XML差
- 6.JSON的速度要远远快于XML
适合的场景
- (1)数据传输:JSON比XMl更有优势
- (2)存储数据:XML描述性更强
- (3)XML通常用做配置文件(WEB)
package com.vince.json;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonToken;
import org.junit.Test;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
* JSON和XML比较:
* 1.JSON和XML的数据可读性基本相同
* 2.JSON和XML同样拥有丰富的解析手段
* 3.JSON相对于XML来讲,数据体积更小
* 4.JSON与JavaScript的交互更加方便
* 5.JSON对数据的描述性比XML差
* 6.JSON的速度要远远快于XML
*
*适合的场景
* (1)数据传输:JSON比XMl更有优势
* (2)存储数据:XML描述性更强
* (3)XML通常用做配置文件(WEB)
*/
/**
* 使用Gson直接把JSO数据转换成Java对象
* public Name parserJSON(String data){
* Gson gson=new Gson();
* Name name = gson.fromJson(in, Name.class);//生成对象
* return name;
* }
* 使用Gson直接把JSON数组数据转换成Java对象
* public List<Name> parserJSON(String data){
* Gson gson=new Gson();
* TypeToken<List<Name>> typeToken=new TypeToken<List<Name>>(){};
* List<Name> list= gson.fromJson(in, typeToken.getType());
* return list;
* }
*
*/
public class JSONDemo3 {
/**
* 把一个JSON对象转换成JAVA对象集合,或者把一个JAVA对象集合转换为JSON对象
*/
@Test
public void gson2(){
Gson gson=new Gson();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/vince/json/names.json");
InputStreamReader in=new InputStreamReader(is);
TypeToken<List<Name>> typeToken=new TypeToken<List<Name>>(){};
List<Name> list= gson.fromJson(in, typeToken.getType());
System.out.println(list);
String json = gson.toJson(list, typeToken.getType());
System.out.println(json);
}
class MyTypeTokeb extends TypeToken<List<Name>>{
}
/**
* 生成一个对象
* 把一个JSON对象转换成JAVA对象,或者把一个JAVA对象转换为JSON对象
*/
@Test
public void gson1(){
Gson gson=new Gson();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/vince/name.json");
InputStreamReader in=new InputStreamReader(is);
Name name = gson.fromJson(in, Name.class);//生成对象
System.out.println(name);
String json = gson.toJson(name); //
System.out.println(json);
}
@Test
public void createJSON(){
List<Name> list=new ArrayList<>();
list.add(new Name("vince","ma","1354996@qq.ccom"));
list.add(new Name("jack","wang","jack456@qq.com"));
JsonArray array=new JsonArray();//创建数组
for (Name n:list){
JsonObject obj=new JsonObject();
obj.addProperty("firstName",n.getFirstName());
obj.addProperty("lastName",n.getLastName());
obj.addProperty("email",n.getEmail());
array.add(obj);
}
System.out.println(array.toString());
}
}
测试用例
names.json
[
{"firstName":"Vince","lastName":"Ma","email":"987456159@qq.com"},
{"firstName":"Similar","lastName":"Lin","email":"88886666@qq.com"}
]
name。json
{"firstName":"Vince","lastName":"Ma","email":"987456159@qq.com"},