在Java Maven项目中,如何从JSON生成java源文件?例如,我们有
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York"
}
}
当我们运行mvn generate-sources
时,我们希望它生成如下所示的内容:
class Address {
JSONObject mInternalJSONObject;
Address (JSONObject json){
mInternalJSONObject = json;
}
String getStreetAddress () {
return mInternalJSONObject.getString("streetAddress");
}
String getCity (){
return mInternalJSONObject.getString("city");
}
}
class Person {
JSONObject mInternalJSONObject;
Person (JSONObject json){
mInternalJSONObject = json;
}
String getFirstName () {
return mInternalJSONObject.getString("firstName");
}
String getLastName (){
return mInternalJSONObject.getString("lastName");
}
Address getAddress (){
return Address(mInternalJSONObject.getString("address"));
}
}
作为一名Java开发人员,为了实现这一点,我需要在pom.xml
中编写哪些XML行?
发布于 2015-02-07 10:23:07
这是一个online tool,它将接受JSON,包括嵌套对象或嵌套对象数组,并生成带有Jackson注释的Java源。
发布于 2012-10-18 16:16:51
用最近的项目回答这个老问题;-)。
目前最好的解决方案可能是JsonSchema2Pojo:
它通过很少使用的Json Schema来完成这项工作,但也使用普通的Json。它提供了Ant和Maven插件,online test application可以让你对这个工具有一个初步的了解。我放置了一个Json Tweet并生成了所有的包含类(Tweet、User、Location等)。
我们将在Agorava项目中使用它来生成社交媒体映射,并跟踪其应用程序接口中的contant演变。
发布于 2009-12-25 17:23:21
感谢所有试图提供帮助的人。
对我来说,这个脚本很有帮助。它只处理平面JSON,不关心类型,但自动化了一些例程
String str =
"{"
+ "'title': 'Computing and Information systems',"
+ "'id' : 1,"
+ "'children' : 'true',"
+ "'groups' : [{"
+ "'title' : 'Level one CIS',"
+ "'id' : 2,"
+ "'children' : 'true',"
+ "'groups' : [{"
+ "'title' : 'Intro To Computing and Internet',"
+ "'id' : 3,"
+ "'children': 'false',"
+ "'groups':[]"
+ "}]"
+ "}]"
+ "}";
JSONObject json = new JSONObject(str);
Iterator<String> iterator = json.keys();
System.out.println("Fields:");
while (iterator.hasNext() ){
System.out.println(String.format("public String %s;", iterator.next()));
}
System.out.println("public void Parse (String str){");
System.out.println("JSONObject json = new JSONObject(str);");
iterator = json.keys();
while (iterator.hasNext() ){
String key = iterator.next();
System.out.println(String.format("this.%s = json.getString(\"%s\");",key,key ));
System.out.println("}");
https://stackoverflow.com/questions/1957406
复制相似问题