在我正在开发的android应用程序中,我需要获取一个包含一些数据的json文件来重建java类的代码行。 是否有任何java / javascript库允许转换/解析JSON格式的java类(不仅包含字段,还包括在其中定义的方法),反之亦然?
编辑:我还需要跟踪整个项目的结构(类似于antlr?)
EDIT2:我的不好,我想将一个java类代码存储到一个JSON对象来表示它,我也想通过解析Java代码来创建我自己的json对象并找到方法,类,参数。
{
"file": "PATH/TO/.java",
"language": "java",
"from": 0,
"to": 255,
"classes": [
"Test:2"
//...
],
"lines": [
[
"public class Test{"
//...
]
]
}
但如果有一个好的起点,那就太好了。
答案 0 :(得分:1)
您可以使用jackson库 - http://jackson.codehaus.org/:http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/
答案 1 :(得分:1)
使用GSON:“GOOGLE for JSON”它是一个谷歌开源JSON库,它可以将Java对象转换为JSON对象,反之亦然
答案 2 :(得分:1)
问题在于现有工具(例如GWT)“仅”能够创建用于在浏览器中执行的正常运行的JS代码。但它不一定类似于原始的Java类。你的用例听起来完全不同。看起来您希望将Java源代码表示为JSON数据,而您不需要/想要执行它。
我担心您可能需要为此创建自己的工具,以满足您的特定要求。我还担心这个工具必须能够解析Java代码,因为使用简单的正则表达式来提取数据在这里没有多大帮助,因为嵌套类型(接口,类,枚举)以及单个Java文件可能包含多个类型声明(尽管不鼓励,但有可能)。
以下是Java解析器的一些链接:
http://code.google.com/p/javaparser/(不幸的是只有Java 1.5)
http://www.ibm.com/developerworks/opensource/library/os-ast/(讨论Eclipse Java解析器,它非常强大,可能最适合您的需求)
您也可以按照建议使用ANTLR创建自己的解析器。据我所知,最新的ANTLR版本有一些你需要用Java实现的访问者模式。您可以实现一个连续构建JSON输出的访问者。
但是,您确实应该使用Eclipse的ASTParser,因为您可以轻松地迭代类的所有方法并将其实现代码作为String。
答案 3 :(得分:0)
你有Gson包将Json String转换为Java对象,反之亦然。
<强> MyClass.java 强>
public class MyClass {
private String mStr = "";
public String getStr() {
return mStr;
}
public void setStr(String mStr) {
this.mStr = mStr;
}
}
<强> Main.java 强>
public class Main {
public static void main(String[] args) {
String jsonString = "{ \"mStr\": \"foo\" }";
Gson mGson = new Gson();
MyClass res = mGson.fromJson(jsonString, MyClass.class);
System.out.println(res.getStr());
}
}
输出:foo
[编辑1]
您无法存储到Json
类结构,只能存储数据
[编辑2]
从您的修复中我理解了以下内容:
这个Json String表示如何处理“text”文件,假设您从服务器下载。但是没有什么内容Json String中你需要将它转换为Java中的Object(如果你想使用Java),然后根据规则(从Json String中获取)编写任何逻辑。确保java代码能够生成Java文件。你的例子告诉你:
所以使用我上面的例子,创建类,让我们说Launcher
:
public class Launcher{
private String file;
private String language;
private int from;
private int to;
private List<String> classes;
private List<SomeOtherClass> lines;
....
}