以gson-2.3.1.jar为例
编写Article和Category对象
package com.zns.bean; public class Article { private int articleid; private String articlename; public int getArticleid() { return articleid; } public void setArticleid(int articleid) { this.articleid = articleid; } public String getArticlename() { return articlename; } public void setArticlename(String articlename) { this.articlename = articlename; } public Article() { super(); } public Article(int articleid, String articlename) { super(); this.articleid = articleid; this.articlename = articlename; } @Override public String toString() { return "Article [articleid=" + articleid + ", articlename=" + articlename + "]"; } }
package com.zns.bean; import java.util.List; public class Category { private int categoryid; private String categoryname; private List<Article> articles; public int getCategoryid() { return categoryid; } public void setCategoryid(int categoryid) { this.categoryid = categoryid; } public String getCategoryname() { return categoryname; } public void setCategoryname(String categoryname) { this.categoryname = categoryname; } public List<Article> getArticles() { return articles; } public void setArticles(List<Article> articles) { this.articles = articles; } public Category() { super(); } public Category(int categoryid, String categoryname, List<Article> articles) { super(); this.categoryid = categoryid; this.categoryname = categoryname; this.articles = articles; } @Override public String toString() { return "Category [categoryid=" + categoryid + ", categoryname=" + categoryname + ", articles=" + articles + "]"; } }
// bean转json Gson gson = new Gson(); Article article = new Article(1, "文章1"); String json = gson.toJson(article); System.out.println(json); // json转bean Article obj = gson.fromJson(json, Article.class); System.out.println(obj); // list对象转json Gson gson = new Gson(); List<Article> list = new ArrayList<Article>(); list.add(new Article(1, "a")); list.add(new Article(2, "b")); String json = gson.toJson(list); System.out.println(json); // json转list对象 List<Article> list2 = gson.fromJson(json, new TypeToken<List<Article>>() { }.getType()); for (Article article : list2) { System.out.println(article); } // map转json Gson gson = new Gson(); Map<String, Object> map1 = new HashMap<String, Object>(); Article article = new Article(1, "aaa"); map1.put("id", "1"); map1.put("article", article); String json = gson.toJson(map1); System.out.println(json); // json转map Map<String, Object> map2 = gson.fromJson(json, new TypeToken<Map<String, Object>>() { }.getType()); System.out.println(map2); // 复杂bean转json Gson gson = new Gson(); List<Article> articles = new ArrayList<Article>(); articles.add(new Article(1, "a")); articles.add(new Article(2, "b")); Category category = new Category(1, "分类1", articles); String json = gson.toJson(category); System.out.println(json); // json转复杂bean Category obj = gson.fromJson(json, Category.class); System.out.println(obj); // 判断json中是否有属性 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}"; String propertyName = "name"; boolean isContains = false; JsonParser jsonParser = new JsonParser(); JsonElement element = jsonParser.parse(json); JsonObject jsonObj = element.getAsJsonObject(); isContains = jsonObj.has(propertyName); System.out.println(isContains); // 修改json中的属性 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}"; String propertyName = "name"; Object propertyValue = "aaaa"; JsonParser jsonParser = new JsonParser(); JsonElement element = jsonParser.parse(json); JsonObject jsonObj = element.getAsJsonObject(); jsonObj.remove(propertyName); jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue)); json = jsonObj.toString(); System.out.println(json); // 向json中添加属性 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}"; String propertyName = "desc"; Object propertyValue = "json各种技术的调研"; JsonParser jsonParser = new JsonParser(); JsonElement element = jsonParser.parse(json); JsonObject jsonObj = element.getAsJsonObject(); jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue)); json = jsonObj.toString(); System.out.println(json); // 除去json中的某个属性 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}"; String propertyName = "id"; JsonParser jsonParser = new JsonParser(); JsonElement element = jsonParser.parse(json); JsonObject jsonObj = element.getAsJsonObject(); jsonObj.remove(propertyName); json = jsonObj.toString(); System.out.println(json); // 从json串中获取属性 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}"; String propertyName = "id"; String propertyValue = ""; try { JsonParser jsonParser = new JsonParser(); JsonElement element = jsonParser.parse(json); JsonObject jsonObj = element.getAsJsonObject(); propertyValue = jsonObj.get(propertyName).toString(); } catch (Exception e) { propertyValue = null; } System.out.println(propertyValue); // 判断字符串是否是json,通过捕捉的异常来判断是否是json String json1 = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"java技术\"}]"; String json2 = "{\"id\":1,\"name\":\"Json技术\"}"; boolean jsonFlag; try { new JsonParser().parse(json1).getAsJsonObject(); jsonFlag = true; } catch (Exception e) { jsonFlag = false; System.out.println(e.toString()); } System.out.println(jsonFlag); // json1 输出false 是数组 // json2 输出true