Gson -- java对象和string相互转换

男娘i 2024-04-06 12:17 108阅读 0赞

Gson相比org.json最大的好处是从json字符串转向java实例时候少了依据每个实例自己赋值的过程,比如在org.json的时候,我们先从json字符串构建一个jsonobject,然后用各种的json get方法获取到每个字段的值,这是一个体力活。而gson依据反射机制我们只要传递我们要实例化的类型class进去返回就是创建好的实例。大大减少了代码量。

java实例–>json

构建了三个方法,分别测试javabean,list,map转化成json的用例。用法超级简单,实例化一个Gson实例,然后调用成员方法tojson,然后就转化成了json字符串。
这个tojson方法不依靠原来对象的tostring方法。也就是说待json化的对象不实现tostring方法也可以成功json化。

  1. package gson.demo.tojson;
  2. import java.util.List;
  3. import java.util.Map;
  4. import com.google.gson.Gson;
  5. import gson.demo.javabean.Person;
  6. public class ObjectToJson {
  7. /**
  8. * javabean to json
  9. *
  10. * @param person
  11. * @return
  12. */
  13. public static String javabeanToJson(Person person) {
  14. Gson gson = new Gson();
  15. String json = gson.toJson(person);
  16. return json;
  17. }
  18. /**
  19. * list to json
  20. *
  21. * @param list
  22. * @return
  23. */
  24. public static String listToJson(List<Person> list) {
  25. Gson gson = new Gson();
  26. String json = gson.toJson(list);
  27. return json;
  28. }
  29. /**
  30. * map to json
  31. *
  32. * @param map
  33. * @return
  34. */
  35. public static String mapToJson(Map<String, Person> map) {
  36. Gson gson = new Gson();
  37. String json = gson.toJson(map);
  38. return json;
  39. }
  40. }

Json–>java实例

这方面是Gson的优势
关于new TypeToken() {}.getType());的问题是eclipse没有提示要写对。这个参数的作用是给出实例化的模板

  1. package gson.demo.tojson;
  2. import java.util.List;
  3. import java.util.Map;
  4. import com.google.gson.Gson;
  5. import com.google.gson.reflect.TypeToken;
  6. import gson.demo.javabean.Person;
  7. public class JsonToObject {
  8. /**
  9. * json to javabean
  10. *
  11. * @param json
  12. */
  13. public static void jsonToJavaBean(String json) {
  14. Gson gson = new Gson();
  15. Person person = gson.fromJson(json, Person.class);//对于javabean直接给出class实例
  16. System.out.println(person.toString());
  17. }
  18. /**
  19. * json字符串转List集合
  20. */
  21. public static void jsonToList(String json) {
  22. Gson gson = new Gson();
  23. List<Person> persons = gson.fromJson(json, new TypeToken<List<Person>>() {
  24. }.getType());//对于不是类的情况,用这个参数给出
  25. for (Person person : persons) {
  26. System.out.println(person);
  27. }
  28. }
  29. public static void jsonToMap(String json) {
  30. // TODO Auto-generated method stub
  31. Gson gson = new Gson();
  32. Map<String, Person> maps = gson.fromJson(json, new TypeToken<Map<String, Person>>() {
  33. }.getType());
  34. for (Map.Entry<String, Person> entry : maps.entrySet()) {
  35. System.out.println("key: " + entry.getKey() + " " + "value: " + entry.getValue());
  36. }
  37. }
  38. }

发表评论

表情:
评论列表 (有 0 条评论,108人围观)

还没有评论,来说两句吧...

相关阅读