将JavaBeans源解析为json描述符

时间:2014-06-11 09:16:00

标签: java javascript json javabeans

我正在寻找一种工具或方法来分析标准的JavaBeans源代码(带有getter和setter)并生成某种json描述符。
可以使用gruntant或其他任何内容 例如:

FilterBean.java:

package com.abc.beans;

import java.io.Serializable;
import java.util.List;
import java.util.Map;


public class FilterBean implements Serializable {
    private static final long serialVersionUID = 7490361447912259765L;

    private Map<String, List<LabelValueBean>> filterMapList;
    private String name;

    public Map<String, List<LabelValueBean>> getFilterMapList() {
        return this.filterMapList;
    }
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

LabelValueBean.java:

package com.abc.beans;

import java.io.Serializable;    
import java.util.List;

public class LabelValueBean implements Serializable {
    private static final long serialVersionUID = 1237198378921379812L;

    private String label;
    private Integer id;
    private List<String> values;

    public String getLabel() {
        return this.label;
    }
    public void setLabel(String label) {
        this.label = label;
    }
    public Integer getId() {
        return this.idlabel;
    }
    public List<String> getValues() {
        return this.values;
    }
    public void setValues(List<String> values) {
        this.values = values;
    }
}

输出如下内容:

com.abc.beans.FilterBean.json:

{
  "name" : {
    "type" : "String",
    "setter" : true
  },
  "filterMapList" : {
    "type" : "Map",
    "innerType" : "com.abc.beans.LabelValueBean",
    "setter" : false
  }
}

com.abc.beans.LabelValueBean.json:

{
  "label" : {
    "type" : "String",
    "setter" : true
  },
  "values" : {
    "type" : "Array",
    "innerType" : "String",
    "setter" : true
  },
  "id" : {
    "type" : "Integer",
    "setter" : false
  }
}

任何想法?

1 个答案:

答案 0 :(得分:3)

有很多工具可以使用对象图并将它们转换为JSON。 JacksonGSON是常用的两种。

但这些东西只代表数据,可能无法全面了解结构。如果您想在Java环境之外传递结构,那么您可能希望生成"JSON Schema"。还有另一个question讨论了如何使用Jackson模块做到这一点。