Генериране на 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 обект към Json

Наздраве .t.

person Tony    schedule 19.10.2013