Генерация JSON из java-файла

Есть ли стандартный или существующий способ сгенерировать «что-то» из нескомпилированного класса Java на основе его содержимого? Итак, в основном что-то вроде этого:

@MakeJsonDocumentation
public class ExistingClass{
    private name = "";

    public ExistingClass(String name){
        this.name = name;
    }

    @JsonField
    public String getName(){
        return this.name;
    }

    @JsonField
    public void setName(String name){
        this.name = name;
    }

    @JsonMethod
    public void someMethod(String text){
        System.out.println("someMethod " + text)
    }

    @JsonMethod
    public void otherMethod(){
        System.out.println("otherMethod")
    }
}

во что-то вроде этого

{
  "ExistingClass": {
    "Fields": {
      "Name": "String"
    },
    "Methods": {
      "someMethod": {
        "Parameters": {
          "Type": "String",
          "Name": "text"
        },
        "Returns": "Nothing"
      },
      "otherMethod": {
        "Parameters": "Nothing",
        "Returns": {
          "Type": "String"
        }
      }
    }
  }
}

И если нет, возможно ли сделать это с помощью аннотаций времени компиляции, потому что я хотел бы автоматизировать генерацию вместо того, чтобы писать синтаксический анализатор, и каждый раз, когда я что-то меняю в классе, бросаю его через синтаксический анализатор, чтобы получить актуальный техпаспорт.

Я здесь как бы в темноте, я знаю только то, что хочу, но понятия не имею, как этого добиться, поэтому, по крайней мере, некоторые поисковые ключевые слова в правильном направлении были бы очень кстати: p


person Timotheus    schedule 19.10.2013    source источник
comment
пожалуйста, проверьте это stackoverflow.com/ вопросы/17866155/   -  person Karthik Prasad    schedule 19.10.2013


Ответы (2)


Чтобы достичь Json, который вы разместили выше, вы можете:

  • используйте отражение, чтобы извлечь все имена и методы полей
  • использовать JSONObject (парсер/построитель json)

из нескомпилированного класса Java

Однако отражение работает с экземплярами (или все поля/методы должны быть статическими)

person Maxim Shoustin    schedule 19.10.2013
comment
Я полагаю, мне действительно придется использовать что-то вроде google-reflections, чтобы получить все классы с определенной аннотацией или в одном пакете? - person Timotheus; 19.10.2013

Как насчет этого?
https://jersey.java.net/documentation/1.17/json.html

Вот более раннее сообщение, которое также может помочь: Json - Java Object to Json

Ура .т.

person Tony    schedule 19.10.2013