我仿照微软AdaptiveCard 生了很多豆子类。
public class AdaptiveTypedElement {
@JsonProperty("additionalPorperties")
public Map<String, Object> additionalPorperties = new HashMap<String, Object>();
//
@JsonProperty("type")
public String type;
@JsonProperty("id")
public String id;
@JsonProperty("text")
public String text;
public Map<String, Object> getAdditionalPorperties() {
return additionalPorperties;
}
public void setAdditionalPorperties(Map<String, Object> additionalPorperties) {
this.additionalPorperties = additionalPorperties;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public void setType(String type) {
this.type = type;
}
public String getType() {
return type;
}
public AdaptiveTypedElement(){}
}``
`public class AdaptiveElement extends AdaptiveTypedElement {
@JsonProperty("spacing")
public AdaptiveSpacing spacing ;
@JsonProperty("separator")
public boolean separator = false;
@JsonProperty("speak")
public String speak;
@JsonProperty("separation")
// public AdaptiveSeparationStyle separation;
public String separation;
public AdaptiveElement(){
super();
}
public String getSpeak() {
return speak;
}
public void setSpeak(String speak) {
this.speak = speak;
}
public AdaptiveSpacing getSpacing() {
return spacing;
}
public void setSeparation(String separation) {
this.separation = separation;
}
public void setSeparator(boolean separator) {
this.separator = separator;
}
public void setSpacing(AdaptiveSpacing spacing) {
this.spacing = spacing;
}
public String getSeparation() {
return separation;
}
@Override
public String getId() {
return super.getId();
}
@Override
public void setType(String type) {
super.setType(type);
}
@Override
public Map<String, Object> getAdditionalPorperties() {
return super.getAdditionalPorperties();
}
@Override
public String getType() {
return super.getType();
}
@Override
public void setId(String id) {
super.setId(id);
}
@Override
public void setAdditionalPorperties(Map<String, Object> additionalPorperties) {
super.setAdditionalPorperties(additionalPorperties);
}
}
public abstract class AdaptiveInput extends AdaptiveElement {
@JsonProperty("isRequired")
public boolean isRequired;
public AdaptiveInput(){
super();
}
@Override
public AdaptiveSpacing getSpacing() {
return super.getSpacing();
}
@Override
public void setSeparation(String separation) {
super.setSeparation(separation);
}
@Override
public String getSeparation() {
return super.getSeparation();
}
@Override
public String getSpeak() {
return super.getSpeak();
}
@Override
public void setSeparator(boolean separator) {
super.setSeparator(separator);
}
@Override
public void setSpacing(AdaptiveSpacing spacing) {
super.setSpacing(spacing);
}
@Override
public void setSpeak(String speak) {
super.setSpeak(speak);
}
public void setRequired(boolean required) {
isRequired = required;
}
@Override
public String getType() {
return super.getType();
}
@Override
public void setAdditionalPorperties(Map<String, Object> additionalPorperties) {
super.setAdditionalPorperties(additionalPorperties);
}
@Override
public void setId(String id) {
super.setId(id);
}
@Override
public Map<String, Object> getAdditionalPorperties() {
return super.getAdditionalPorperties();
}
@Override
public void setType(String type) {
super.setType(type);
}
@Override
public String getId() {
return super.getId();
}
}
public class AdaptiveTextBlock extends AdaptiveElement{
@JsonProperty("typeName")
protected String typeName = "TextBlock";
// @JsonProperty("type")
// protected String type = "TextBlock";
@JsonProperty("Text")
protected String Text = "";
@JsonProperty("size")
protected AdaptiveTextSize size;
@JsonProperty("weight")
protected AdaptiveTextWeight weight;
@JsonProperty("color")
protected AdaptiveTextColor color;
@JsonProperty("horizontalAlignment")
protected AdaptiveHorizontalAlignment horizontalAlignment = AdaptiveHorizontalAlignment.Left;
@JsonProperty("wrap")
protected boolean wrap = false;
@JsonProperty("isSubtle")
protected boolean isSubtle = false;
@JsonProperty("maxLines")
protected int maxLines = 0;
@JsonProperty("maxWidth")
protected int maxWidth = 0;
public AdaptiveTextBlock(){super();};
@Override
public Map<String, Object> getAdditionalPorperties() {
return super.getAdditionalPorperties();
}
public String getTypeName() {
return typeName;
}
@Override
public String getType() {
type = "TextBlock";
return type;
}
@Override
public String getId() {
return super.getId();
}
public AdaptiveHorizontalAlignment getHorizontalAlignment() {
return horizontalAlignment;
}
public AdaptiveTextColor getColor() {
return color;
}
public AdaptiveTextSize getSize() {
return size;
}
public AdaptiveTextWeight getWeight() {
return weight;
}
public int getMaxLines() {
return maxLines;
}
public int getMaxWidth() {
return maxWidth;
}
public String getText() {
return Text;
}
@Override
public void setId(String id) {
super.setId(id);
}
@Override
public void setAdditionalPorperties(Map<String, Object> additionalPorperties) {
super.setAdditionalPorperties(additionalPorperties);
}
public void setColor(AdaptiveTextColor color) {
this.color = color;
}
public void setHorizontalAlignment(AdaptiveHorizontalAlignment horizontalAlignment) {
this.horizontalAlignment = horizontalAlignment;
}
public void setMaxLines(int maxLines) {
this.maxLines = maxLines;
}
public void setMaxWidth(int maxWidth) {
this.maxWidth = maxWidth;
}
public void setSize(AdaptiveTextSize size) {
this.size = size;
}
public void setSubtle(boolean subtle) {
isSubtle = subtle;
}
public void setText(String text) {
Text = text;
}
public void setType(String type) {
this.type = type;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public void setWeight(AdaptiveTextWeight weight) {
this.weight = weight;
}
public void setWrap(boolean wrap) {
this.wrap = wrap;
}
}
``public class AdaptiveSubmitAction extends AdaptiveAction {
@JsonProperty("typeName")
public final String typeName = "Action.Submit";
@JsonProperty("type")
public final String type = "Action.Submit";
public AdaptiveSubmitAction(){
super();
}
@Override
public String getTitle() {
return super.getTitle();
}
@Override
public void setSpeak(String speak) {
super.setSpeak(speak);
}
@Override
public String getSpeak() {
return super.getSpeak();
}
public String getTypeName() {
return typeName;
}
@Override
public void setTitle(String title) {
super.setTitle(title);
}
public String getType() {
return type;
}
}
public class AdaptiveAction extends AdaptiveTypedElement {
@JsonProperty("title")
public String title;
@JsonProperty("speak")
public String speak;
public AdaptiveAction() {
super();
}
public void setTitle(String title) {
this.title = title;
}
public void setSpeak(String speak) {
this.speak = speak;
}
public String getTitle() {
return title;
}
public String getSpeak() {
return speak;
}
}
public class AdaptiveCard extends AdaptiveTypedElement {
@JsonProperty("contentType")
public String contentType = "application/vnd.microsoft.card.adaptive";
@JsonProperty("typeName")
public String typeName = "AdaptiveCard";
// @JsonProperty("type")
// protected String type = "AdaptiveCard";
@JsonProperty("body")
public List<AdaptiveElement> body = new ArrayList<AdaptiveElement>();
@JsonProperty("actions")
public List<AdaptiveAction> actions = new ArrayList<AdaptiveAction>();
@JsonProperty("speak")
public String speak = null;
@JsonProperty("title")
public String title;
@JsonProperty("version")
//public AdaptiveSchemaVersion version = null;
public String version = null;
@JsonProperty("fallbackText")
public String fallbackText = null;
@JsonProperty("lang")
public String lang = null;
public AdaptiveCard(){
super();
}
@Override
public String getType() {
this.type = "AdaptiveCard";
return type;
}
public String getContentType() {
return contentType;
}
public String getFallbackText() {
return fallbackText;
}
public String getLang() {
return lang;
}
public String getSpeak() {
return speak;
}
public String getTitle() {
return title;
}
public String getVersion() {
return version;
}
public List<AdaptiveAction> getActions() {
return actions;
}
public List<AdaptiveElement> getBody() {
return body;
}
public void setActions(List<AdaptiveAction> actions) {
this.actions = actions;
}
public void setBody(List<AdaptiveElement> body) {
this.body = body;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public void setFallbackText(String fallbackText) {
this.fallbackText = fallbackText;
}
public void setLang(String lang) {
this.lang = lang;
}
public void setSpeak(String speak) {
this.speak = speak;
}
public void setTitle(String title) {
this.title = title;
}
public void setType(String type) {
this.type = type;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public void setVersion(String version) {
this.version = version;
}
}
public class AdaptiveColumn extends AdaptiveContainer{
@JsonProperty("typeName")
public final String typeName = "Column";
// @JsonProperty("type")
// public final String type = "Column";
@JsonProperty("size")
public String size;
@JsonProperty("with")
public String with;
public AdaptiveColumn(){
super();
}
public void setSize(String size) {
this.size = size;
}
public void setWith(String with) {
this.with = with;
}
public String getTypeName() {
return typeName;
}
@Override
public String getType() {
this.type = "Column";
return type;
}
public String getSize() {
return size;
}
public String getWith() {
return with;
}
}
public class AdaptiveColumnSet extends AdaptiveElement {
@JsonProperty("typeName")
public final String typeName = "ColumnSet";
// @JsonProperty("type")
// public final String type = "ColumnSet";
@JsonProperty("columns")
public List<AdaptiveColumn> columns = new ArrayList<AdaptiveColumn>();
@JsonProperty("selectionAction")
public AdaptiveAction selectionAction = null;
public AdaptiveColumnSet(){
super();
}
@Override
public String getType() {
type = "ColumnSet";
return type;
}
@Override
public String getSpeak() {
return super.getSpeak();
}
public String getTypeName() {
return typeName;
}
@Override
public String getSeparation() {
return super.getSeparation();
}
@Override
public AdaptiveSpacing getSpacing() {
return super.getSpacing();
}
@Override
public Map<String, Object> getAdditionalPorperties() {
return super.getAdditionalPorperties();
}
@Override
public String getId() {
return super.getId();
}
public AdaptiveAction getSelectionAction() {
return selectionAction;
}
public List<AdaptiveColumn> getColumns() {
return columns;
}
@Override
public void setSpeak(String speak) {
super.setSpeak(speak);
}
@Override
public void setSpacing(AdaptiveSpacing spacing) {
super.setSpacing(spacing);
}
@Override
public void setSeparator(boolean separator) {
super.setSeparator(separator);
}
@Override
public void setSeparation(String separation) {
super.setSeparation(separation);
}
@Override
public void setAdditionalPorperties(Map<String, Object> additionalPorperties) {
super.setAdditionalPorperties(additionalPorperties);
}
@Override
public void setId(String id) {
super.setId(id);
}
@Override
public void setType(String type) {
super.setType(type);
}
public void setColumns(List<AdaptiveColumn> columns) {
this.columns = columns;
}
public void setSelectionAction(AdaptiveAction selectionAction) {
this.selectionAction = selectionAction;
}
}
public class AdaptiveContainer extends AdaptiveElement {
@JsonProperty("typeName")
public String typeName = "Container";
// @JsonProperty("type")
// public String type = "Container";
@JsonProperty("items")
public List<AdaptiveElement> items = new ArrayList<AdaptiveElement>();
@JsonProperty("selectAction")
public AdaptiveAction selectAction = null;
@JsonProperty("style")
public AdaptiveContainerStyle style = AdaptiveContainerStyle.Default;
public AdaptiveContainer(){
super();
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public void setType(String type) {
this.type = type;
}
@Override
public String getType() {
type = "Container";
return type;
}
public String getTypeName() {
return typeName;
}
public AdaptiveAction getSelectAction() {
return selectAction;
}
public AdaptiveContainerStyle getStyle() {
return style;
}
public List<AdaptiveElement> getItems() {
return items;
}
public void setItems(List<AdaptiveElement> items) {
this.items = items;
}
public void setSelectAction(AdaptiveAction selectAction) {
this.selectAction = selectAction;
}
public void setStyle(AdaptiveContainerStyle style) {
this.style = style;
}
@Override
public void setId(String id) {
super.setId(id);
}
@Override
public String getId() {
return super.getId();
}
@Override
public void setAdditionalPorperties(Map<String, Object> additionalPorperties) {
super.setAdditionalPorperties(additionalPorperties);
}
@Override
public void setSeparation(String separation) {
super.setSeparation(separation);
}
@Override
public void setSeparator(boolean separator) {
super.setSeparator(separator);
}
@Override
public void setSpacing(AdaptiveSpacing spacing) {
super.setSpacing(spacing);
}
@Override
public void setSpeak(String speak) {
super.setSpeak(speak);
}
@Override
public Map<String, Object> getAdditionalPorperties() {
return super.getAdditionalPorperties();
}
@Override
public AdaptiveSpacing getSpacing() {
return super.getSpacing();
}
@Override
public String getSeparation() {
return super.getSeparation();
}
@Override
public String getSpeak() {
return super.getSpeak();
}
}
public class AdaptiveDateInput extends AdaptiveInput {
@JsonProperty("typeName")
public final String typeName = "Input.Date";
// @JsonProperty("type")
// public final String type = "Input.Date";
@JsonProperty("placeHolder")
public String placeHolder = null;
@JsonProperty("value")
public String value = null;
@JsonProperty("min")
public String min = null;
@JsonProperty("max")
public String max = null;
public AdaptiveDateInput(){
super();
}
public void setMax(String max) {
this.max = max;
}
public String getTypeName() {
return typeName;
}
public void setMin(String min) {
this.min = min;
}
public void setPlaceHolder(String placeHolder) {
this.placeHolder = placeHolder;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String getType() {
String type = "Input.Date";
return type;
}
public String getMax() {
return max;
}
public String getMin() {
return min;
}
public String getPlaceHolder() {
return placeHolder;
}
public String getValue() {
return value;
}
@Override
public String getSpeak() {
return super.getSpeak();
}
@Override
public String getSeparation() {
return super.getSeparation();
}
@Override
public AdaptiveSpacing getSpacing() {
return super.getSpacing();
}
@Override
public Map<String, Object> getAdditionalPorperties() {
return super.getAdditionalPorperties();
}
@Override
public String getId() {
return super.getId();
}
@Override
public void setSpeak(String speak) {
super.setSpeak(speak);
}
@Override
public void setSpacing(AdaptiveSpacing spacing) {
super.setSpacing(spacing);
}
@Override
public void setSeparator(boolean separator) {
super.setSeparator(separator);
}
@Override
public void setSeparation(String separation) {
super.setSeparation(separation);
}
@Override
public void setAdditionalPorperties(Map<String, Object> additionalPorperties) {
super.setAdditionalPorperties(additionalPorperties);
}
@Override
public void setId(String id) {
super.setId(id);
}
@Override
public void setType(String type) {
super.setType(type);
}
@Override
public void setRequired(boolean required) {
super.setRequired(required);
}
}
`
我自己的demo json数据如下:
{ "type": "AdaptiveCard", "version": "1.0", "id": "workloadQCactivity 20", "speak": "activity 20 <break time=\"300ms\"/> at<break time=\"300ms\"/> <break time=\"300ms\"/>building<break time=\"300ms\"/>A<break time=\"300ms\"/>floor<break time=\"300ms\"/>1<break time=\"300ms\"/>room<break time=\"300ms\"/>1<break time=\"300ms\"/> ", "body": [{ "type": "Container", "items": [{ "type": "ColumnSet", "columns": [{ "type": "Column", "width": "Stretch", "items": [{ "type": "TextBlock", "size": "large", "weight": "bolder", "text": "activity 20 at building A floor 1 room 1", "wrap": true }] }] }] }], "actions": [{ "type": "Action.ShowCard", "card": { "type": "AdaptiveCard", "version": "1.0", "body": [{ "type": "TextBlock", "size": "medium", "weight": "bolder", "isSubtle": true, "text": "have thing to check list1", "wrap": true }, { "type": "TextBlock", "weight": "bolder", "isSubtle": true, "text": "this is section 1", "wrap": true }, { "type": "TextBlock", "isSubtle": true, "text": "q1 of s1", "wrap": true }, { "type": "TextBlock", "isSubtle": true, "text": "q2 of s2", "wrap": true }, { "type": "TextBlock", "weight": "bolder", "isSubtle": true, "text": "this is section 2", "wrap": true }, { "type": "TextBlock", "isSubtle": true, "text": "q1 of s22", "wrap": true }, { "type": "TextBlock", "size": "medium", "weight": "bolder", "isSubtle": true, "text": "have checklist 2", "wrap": true }, { "type": "TextBlock", "weight": "bolder", "isSubtle": true, "text": "section of the second checklist", "wrap": true }, { "type": "TextBlock", "isSubtle": true, "text": "qqqqqq", "wrap": true }] }, "title": "Show Checklist" }] }
{
"type": "AdaptiveCard",
"version": "1.0",
"id": "workloadQCactivity 20",
"speak": "activity 20 at buildingAfloor1room1 ",
"body": [{
"type": "Container",
"items": [{
"type": "ColumnSet",
"columns": [{
"type": "Column",
"width": "Stretch",
"items": [{
"type": "TextBlock",
"size": "large",
"weight": "bolder",
"text": "activity 20 at building A floor 1 room 1",
"wrap": true
}]
}]
}]
}],
"actions": [{
"type": "Action.ShowCard",
"card": {
"type": "AdaptiveCard",
"version": "1.0",
"body": [{
"type": "TextBlock",
"size": "medium",
"weight": "bolder",
"isSubtle": true,
"text": "have thing to check list1",
"wrap": true
}, {
"type": "TextBlock",
"weight": "bolder",
"isSubtle": true,
"text": "this is section 1",
"wrap": true
}, {
"type": "TextBlock",
"isSubtle": true,
"text": "q1 of s1",
"wrap": true
}, {
"type": "TextBlock",
"isSubtle": true,
"text": "q2 of s2",
"wrap": true
}, {
"type": "TextBlock",
"weight": "bolder",
"isSubtle": true,
"text": "this is section 2",
"wrap": true
}, {
"type": "TextBlock",
"isSubtle": true,
"text": "q1 of s22",
"wrap": true
}, {
"type": "TextBlock",
"size": "medium",
"weight": "bolder",
"isSubtle": true,
"text": "have checklist 2",
"wrap": true
}, {
"type": "TextBlock",
"weight": "bolder",
"isSubtle": true,
"text": "section of the second checklist",
"wrap": true
}, {
"type": "TextBlock",
"isSubtle": true,
"text": "qqqqqq",
"wrap": true
}]
},
"title": "Show Checklist"
}]
}
我想拿到具体子类,而不是父类:AdaptiveElement, 应该是Column . ColumnSet. 求哪个大神帮忙看下
我的调用地方如何下:card = (AdaptiveCard) JSON.parseObject(attachJson, AdaptiveCard.class);
暂无答案!
目前还没有任何答案,快来回答吧!