使用Java创建JSON数据

来源:互联网 发布:问答系统 知乎 编辑:程序博客网 时间:2024/06/06 08:53

  要创建的JSON数据格式如下:

{  "cat": "it",  "languages": [    {"id": 1, "ide": "eclipse", "name": "Java"},    {"id": 2, "ide": "XCode", "name": "Swift"},    {"id": 3, "ide": "Visual Studio", "name": "C#"}  ],  "pop": true}

  创建JSON数据的Java源码 CreateJSON.java 如下:
  第一种方式:

private static void CreateJSONByObject() {        JsonObject object =new JsonObject();        object.addProperty("cat","it");        JsonArray array=new JsonArray();        JsonObject lan = new JsonObject();        lan.addProperty("id",1);        lan.addProperty("ide","Eclipse");        lan.addProperty("name","Java");        array.add(lan);        lan = new JsonObject();        lan.addProperty("id",2);        lan.addProperty("ide","XCode");        lan.addProperty("name","Swift");        array.add(lan);        lan = new JsonObject();        lan.addProperty("id",3);        lan.addProperty("ide","Visual Studio");        lan.addProperty("name","C#");        array.add(lan);        object.add("language",array);        object.addProperty("pop",true);        System.out.println(object.toString());    }

  第二种方式:

private static void CreateJSONByMap() {        Map<String,Object> map = new LinkedHashMap<>();        map.put("cat","it");        Language[] languages = {                new Language(1,"Eclipse","Java"),                new Language(2,"XCode","Swift"),                new Language(3,"Visual Studio","C#"),        };        map.put("language",languages);        map.put("pop",true);        Gson gson = new Gson();        System.out.println(gson.toJson(map));    }

  第三种方式:

private static void CreateJSONByBean() {        JsonBean jsonBean = new JsonBean();        jsonBean.setCat("it");        Language[] languages = {                new Language(1,"Eclipse","Java"),                new Language(2,"XCode","Swift"),                new Language(3,"Visual Studio","C#"),        };        jsonBean.setLanguage(languages);        jsonBean.setPop(true);        Gson gson = new Gson();        System.out.println(gson.toJson(jsonBean));    }

  注:@SerializedName("Name") 可以使Bean生成的 JSON k值重命名

  生成JSON数据个性化操作

GsonBuilder gsonBuilder=new GsonBuilder();gsonBuilder.setPrettyPrinting();gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy() {    @Override    public String translateName(Field f) {        if ((f.getName().equals("name"))){            return "Name";        }        return f.getName();    }});Gson gson = gsonBuilder.create();

  使用关键字 transient 定义的变量在生成JSON时被忽略

private transient String ignore;

  包google-json-2.8.0

  源码下载

原创粉丝点击