【问题标题】:how to validate adaptive card json using the javascript sdk如何使用 javascript sdk 验证自适应卡 json
【发布时间】:2021-07-10 17:07:27
【问题描述】:

我正在自己生成一个自适应卡 json,我想验证该 json 是否根据自适应卡模式编写得很好。我正在阅读this docs,从那里我知道有一个parse 函数。

我是这样用的:

import * as AdaptiveCards from 'adaptivecards';

...

try {
  const adaptiveCard = new AdaptiveCards.AdaptiveCard();
  adaptiveCard.parse(json);
} catch (e) {
  console.log('Error', e);
}

这种方法似乎不起作用,因为解析器接受我传递给它的所有内容,只要它是 json。

我也试过这个:

const v = adaptiveCard.validateProperties();

但无论模式是否正确,响应总是相同的。

我的意思是,不管我有没有这个:

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.3",
  "body": [
  ]
}

或:

{
      "schema": "http://adaptivecards.io/schemas/adaptive-card.json",
      "type": "AdaptiveCard",
      "version": "1.3",
      "boy": [
        {"catcher": true}
      ]
    }

或者这个:

    {
      "schema": "http://adaptivecards.io/schemas/adaptive-card.json",
      "type": "AdaptiveCard",
      "version": "1.3",
      "body": [
      {
         "type": "Container"
      }
    ]
  }

它总是返回相同的,即使有未知的属性,或者容器没有项目。

也许我做错了。

关于如何验证的任何提示?

【问题讨论】:

  • 最简单的方法是使用包裹在try/catch中的parse+render。如果您可以使卡片最有可能有效:)
  • @TimCadenbach 感谢您的评论,将其作为回复发布以支持您

标签: javascript adaptive-cards


【解决方案1】:

验证卡片的最简单方法是尝试渲染它。有一个验证功能,但这并没有真正的帮助,而且还没有完成。

试试这个:

var renderedCard = undefined;
try {
  const adaptiveCard = new AdaptiveCards.AdaptiveCard();
  adaptiveCard.parse(json);
  renderedCard = adaptiveCard.render();
} catch (e) {
  console.log('Error', e);
  return false;
}

任何有效的卡都不会抛出异常,这并不意味着卡完全可以工作,但至少 json 代码肯定是有效的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-03
    • 2018-03-04
    • 2014-03-07
    • 2018-03-24
    • 1970-01-01
    • 2018-11-10
    • 2020-04-19
    • 2021-01-31
    相关资源
    最近更新 更多