AWS Cloudformation JSON模板到c#对象

时间:2016-11-03 19:47:49

标签: c# json amazon-web-services amazon-cloudformation

有谁知道如何将AWS云形成子模板转换为c#对象或自定义类。 我之前使用数据合同对json进行了反序列化,但是我遇到了云形成模板的问题,因为每个资源都以唯一的名称开头,因此我不确定如何处理它。 我的目标是通过将API中的数据和模板中的数据放入一个类并进行比较,将模板与AWS中已有的模板进行比较。 如果有更好的方法,请随时向我发射。 这里是示例云形成模板。

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;

namespace TestsUnitairesSaisieHeures
{
    [TestClass]
    public class TestsSaisieHeures
    {
        [TestMethod]
        public void NumeroSemaineTest()
        {
            //1 - Initialisation des variables
            DateTime DateTest = new DateTime(2016,11,3);
            List<int> expected = new List<int>(new int[] { 44, 45, 46, 47, 48 });
            List<int> actual;

            //2 - Appel de la méthode à tester
            actual = SaisieHeures.SaisieHeures.NumeroSemaine(DateTest);

            //3 - Vérification du résultat
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Vérifiez l\'exactitude de cette méthode de test.");
        }

        [TestMethod]
        public void GetWeekDaysOfWeekFromTest()
        {
            int weekNumberTest = 33;
            List<DateTime> expected = new List<DateTime>(new DateTime[] {new DateTime(2016,8,15),new DateTime(2016,8,16),new DateTime(2016,8,17), new DateTime(2016, 8, 18), new DateTime(2016, 8, 19), new DateTime(2016, 8, 20), new DateTime(2016, 8, 21) });
            List<DateTime> actual;

            actual = SaisieHeures.SaisieHeures.GetWeekDaysOfWeekFrom(weekNumberTest);

            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Vérifiez l\'exactitude de cette méthode de test.");
        }

        [TestMethod]
        public void FirstDateOfWeekISO8601Test()
        {
            int yearTest = 2016;
            int weekOfYearTest = 44;
            DateTime expected = new DateTime(2016,11,1);
            DateTime actual;

            actual = SaisieHeures.SaisieHeures.FirstDateOfWeekISO8601(yearTest, weekOfYearTest);

            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Vérifiez l\'exactitude de cette méthode de test.");
        }

        // Pour exécuter du code avant d'exécuter le premier test dans la classe
        [ClassInitialize()]
        public static void MyClassInitialize(TestContext testContext)
        {
        }

        // Pour exécuter du code après que tous les tests ont été exécutés dans une classe 
        [ClassCleanup()] public static void MyClassCleanup()
        {
        }

        // Pour exécuter du code avant d'exécuter chaque test 
        [TestInitialize()]
        public void MyTestInitialize()
        {
        }

        // Pour exécuter du code après que chaque test a été exécuté 
        [TestCleanup()]
        public void MyTestCleanup()
        {
        } 
    }
}

1 个答案:

答案 0 :(得分:0)

直截了当的方法是将模板的Resources部分视为字典,其中资源名称是键,其属性是值:

class ResourceProperties
{
    public string GroupDescription { get; set; }
}

class Resource
{
    public string Type { get; set; }
    public ResourceProperties Properties { get; set; }
}

class Parameters
{
    public Dictionary<string, Resource> Resources { get; set; }
}

class Template
{
    public Parameters Parameters { get; set; }
}

(其他字段很明显)

然后使用

var template = JsonConvert.DeserializeObject<Template>(json);