使用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
相关文章推荐
- 使用Java操作JSON字符串对象
- 使用json-lib将java对象转换成json字符串
- 使用Java操作JSON字符串对象
- JAVA与JSON的使用方式及转换示例代码
- Android的数据处理:使用annotation实现JSON字符串解析为java对象
- Android的数据处理:使用annotation实现JSON字符串解析为java对象
- Java之使用json-lib进行对象与json字符串之间的转换
- 使用json-lib将java对象转换成json字符串
- 使用Java JSONObject操作JSON字符串对象
- 有关如何在java代码中使用json来互转对象、List、Map等
- 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式
- 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式 .
- 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式
- 在java代码中显示json字符串(怎么避免json字符串中双引号在java代码中显示)
- java使用正则表达式的方法从json格式的字符串中提取需要的字符串
- [编写高质量代码:改善java程序的151个建议]建议57 推荐在复杂字符串操作中使用正则表达式
- Android布局文件Value中设置格式字符串并在Java代码中使用的一点说明
- 如何将一个json字符串当成一个JSON对应来使用,在java中
- Freemarker输出json和java字符串以及javascript代码转义