使用Groovy把json字符串转成Java代码
发布时间:2020-12-14 16:47:35 所属栏目:大数据 来源:网络整理
导读:使用Groovy把json字符串转成Java代码 最近项目里面的通信接口都是json,所以安卓客户端这边需要写很多的Java bean,很多的时候,Java bean都是可以自动生成的,但是有的不能满足自己的需要,所以我就用Groovy来实现了。 至于为什么用Groovy,因为Groovy是基
使用Groovy把json字符串转成Java代码最近项目里面的通信接口都是json,所以安卓客户端这边需要写很多的Java bean,很多的时候,Java bean都是可以自动生成的,但是有的不能满足自己的需要,所以我就用Groovy来实现了。 {
"cityId": 18,"cityName": "西安","provinceId": 27,"cityOrder": 1 }
我们在写Java Bean的时候如下 public class CityInfo{
@SerializedName("cityId")
public String cityId; // 18,
@SerializedName("cityName")
public String cityName; // 西安,
@SerializedName("provinceId")
public String provinceId; // 27,
@SerializedName("cityOrder")
public String cityOrder; // 1
// setter / getter
}
下面是Groovy的简单实现,还是只是简单的生成一些代码,后面考虑实现复制点的。 def jsonSb = new StringBuffer()
new File("json.txt").eachLine {
jsonSb.append(it.trim() + "n")
}
def jsonStr = jsonSb.replaceAll(""","").replaceAll("“","").replaceAll("”","").replaceAll(":","; // ")
def targetSb = new StringBuffer()
jsonStr.split("n").each { line ->
if (line == null || line.trim().length() == 0) {
return
}
strArray = line.split(";")
if (strArray == null || strArray.length < 2) {
targetSb.append(line + "n")
return
}
def (first,last) = strArray
if (((String) first).contains("_")) {
String firstStr = first;
def rename = new StringBuffer();
boolean isLastUnline = false;
for (int i = 0; i < firstStr.length(); i++) {
char c = firstStr.charAt(i)
if (c == '_') {
isLastUnline = true
continue
}
if (isLastUnline) {
rename.append(c.toUpperCase())
isLastUnline = false
} else {
rename.append(c)
}
}
targetSb.append("nt@SerializedName("$first")n")
targetSb.append("tpublic String $rename;$lastn")
} else {
targetSb.append("nt@SerializedName("$first")n")
targetSb.append("tpublic String $linen")
}
}
println()
println targetSb
运行结果如下 @SerializedName("cityId")
public String cityId; // 18,
@SerializedName("cityName")
public String cityName; // 西安,
@SerializedName("provinceId")
public String provinceId; // 27,
@SerializedName("cityOrder")
public String cityOrder; // 1
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |