1. 程式人生 > 實用技巧 >Java小工具類(一)json的K-V轉換為Java類屬性

Java小工具類(一)json的K-V轉換為Java類屬性

場景:最近研究gitlab的api,通過post\get json物件的方式去新建或修改專案、組、鉤子等操作,其json物件需要大量的key-value屬性,新建一個專案類需要一個個敲屬性感覺十分繁瑣,
就寫了這樣一個工具,將json物件輸出為JAVA類的屬性,直接複製貼上就能建立類。

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;


/**
* 將json物件輸出為java類屬性,不是例項
* @param jsonString json物件內容
* @author Mr.Xu
* @date 2020/7/13 0013
*/
public static void jsonToJavaObject(String jsonString){
// 使用map儲存解析後的json物件
Map<String, Object> params = JSON.parseObject(jsonString, new TypeReference<Map<String, Object>>(){});
Iterator iterator = params.entrySet().iterator();
String obj;
String[] ss;
while (iterator.hasNext()){
obj = iterator.next().toString();
// value不為null的,獲取其型別
if (params.get(obj.split("=")[0]) != null){
// 以.分割需要轉義\\.否則是萬用字元
ss = params.get(obj.split("=")[0]).getClass().getName().split("\\.");
System.out.println(ss[ss.length-1]+" "+obj.split("=")[0]);
}else {
// value為null的,暫定為Object類
System.out.println("Object "+obj.split("=")[0]);
}
}
}


// 以組group的json為例,從gitlab介面獲取到組的json物件

public static void main(String[] args) {
String json = "[{\"id\":35,\"web_url\":\"http://worker002/groups/dpaasv2\",\"name\":\"Dpaasv2\",\"path\":\"dpaasv2\",
\"description\":\"DpaasV2.0的使用者組\",\"visibility\":\"internal\",\"share_with_group_lock\":false,
\"require_two_factor_authentication\":false,\"two_factor_grace_period\":48,
\"project_creation_level\":\"developer\",\"auto_devops_enabled\":null,\"subgroup_creation_level\":\"maintainer\",
\"emails_disabled\":null,\"mentions_disabled\":null,\"lfs_enabled\":true,\"default_branch_protection\":2,
\"avatar_url\":\"http://worker002/uploads/-/system/group/avatar/35/gitlab.jpg\",
\"request_access_enabled\":true,\"full_name\":\"Dpaasv2\",
\"full_path\":\"dpaasv2\",\"created_at\":\"2020-06-08T08:14:40.647Z\",\"parent_id\":null}]";
jsonToJavaObject(json);
}

執行程式即可得到類屬性,直接複製非常方便: