您的位置:首页 > Web前端 > JavaScript

使用Groovy把json字符串转成Java代码

2015-04-30 00:23 369 查看

使用Groovy把json字符串转成Java代码

最近项目里面的通信接口都是json,所以安卓客户端这边需要写很多的Java bean,很多的时候,Java bean都是可以自动生成的,但是有的不能满足自己的需要,所以我就用Groovy来实现了。

至于为什么用Groovy,因为Groovy是基于JVM的脚本语言,和Java很像,最重要的时,它能兼容Java代码。

比如下的Json

{
"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("\n\t@SerializedName(\"$first\")\n")
targetSb.append("\tpublic String $rename;$last\n")
} else {
targetSb.append("\n\t@SerializedName(\"$first\")\n")
targetSb.append("\tpublic String $line\n")
}
}

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Groovy json自动生成