gson简单使用及下载地址

gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

和json-lib相比,Gson操作就相当的更简单了不管是对象还是数组,还是上面较复杂的map集合,操作都是一样的,不依赖其他jar,使用起来很方便简单。

 

package gson;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;

/**
 * Gson常用操作
 * 
 * @author xuyw
 * 
 */
public class Test {
 public static void main(String[] args) throws Exception {
  List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  Map m = new HashMap();
  m.put("longitude", "123.999");
  m.put("latitude", "28.999");
  Map m2 = new HashMap();
  m2.put("longitude", "124.333");
  m2.put("latitude", "24.9");
  list.add(m);
  list.add(m2);
  String[] str = new String[2];
  str[0] = "123.999";
  str[1] = "28.999";
  User user = new User(1, "张三");

  Gson gson = new Gson();
  String listjson = gson.toJson(list);//集合转json
  String mapjson = gson.toJson(m);//map转json
  String arrayjson = gson.toJson(str);//数组转json
  String javabeanjson = gson.toJson(user);//对象转json

  System.out
    .println("->********************Object to JSON********************->");
  System.out.println("list -> 转json: " + listjson);
  System.out.println("Map -> 转json: " + mapjson);
  System.out.println("Array -> 转json: " + arrayjson);
  System.out.println("JavaBean -> 转json: " + javabeanjson);
  System.out
    .println("->********************JSON to Object  ********************->");
  List<User> tusers = new ArrayList<User>();
  for (int i = 0; i < 5; i++) {
   tusers.add(new User(i, "user" + i));
  }
  String list_userjson = gson.toJson(tusers);
  System.out.println("json -> 转泛型集合: " + list_userjson);
  List<User> list_user = gson.fromJson(list_userjson,
    new TypeToken<List<User>>() {
    }.getType());
  for (User u : list_user) {
   System.out.println("姓名:" + u.getName());
  }
  System.out
    .println("json -> 转泛型集合List<Map<String,String>>: " + listjson);
  List<Map> listmapList = gson.fromJson(listjson,
    new TypeToken<List<Map<String, String>>>() {
    }.getType());
  for (Map map : listmapList) {
   System.out.println("longitude:" + map.get("longitude"));
  }
  System.out.println("json -> 转javabean: " + listjson);
  User user2 = gson.fromJson(javabeanjson, User.class);
  System.out.println(user2.getName());

  // GsonBuilder gsonBuilder = new GsonBuilder();
  // // 通过GsonBuilder 的create生成Gson对象
  // Gson gson2 = gsonBuilder.create();
  //
  // // 通过TypeToken活动Type对象
  // String gsonstr = gson2.toJson(tusers, new TypeToken<List<User>>() {
  // }.getType());
  // System.out.println(gsonstr);
  File file = new File("gson.txt");// 把json保存文本
  OutputStream out = new FileOutputStream(file);
  JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8"));
  gson.toJson(listmapList, new TypeToken<List<Map<String, String>>>() {
  }.getType(), writer);
  writer.flush();
  InputStream input = new FileInputStream(file);
  // JsonReader reader = new JsonReader(new InputStreamReader(input));
  // List<Map> readertxt = gson.fromJson(reader,
  // new TypeToken<List<Map<String, String>>>() {
  // }.getType());
  List<Map> readertxt = gson.fromJson(new InputStreamReader(input),
    new TypeToken<List<Map<String, String>>>() {
    }.getType());
  System.out.println("读取本地json文件");
  for (Map map : readertxt) {
   System.out.println("longitude:" + map.get("longitude"));
  }
 }

}


 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值