Пользовательский JavaScriptConverter для DateTime?

Вы можете рассчитывать интеграл в каждой строке и столбце. Затем найдите места, где этот интеграл постоянно растет. Здесь вы также можете добавить некоторую скользящую среднюю, чтобы исключить шум и т. Д. Тогда это означает, что здесь более белый, чем в других частях. Теперь вы можете использовать функцию прямоугольника из openCV для рисования прямоугольника вокруг этой области ( http://docs.opencv.org/2.4/modules/core/doc/drawing_functions.html#rectangle ).

27
задан Nick Franceschina 28 August 2009 в 14:14
поделиться

3 ответа

текст ссылки Этот пример работает

JavaScriptSerializer serializer = new JavaScriptSerializer();

DateTime dt = DateTime.Now;
DateTime dt1 = dt;

string jsonDateNow = serializer.Serialize(dt1);
-1
ответ дан Community 14 October 2019 в 13:48
поделиться

ответ таков: вы не можете использовать JavaScriptConverter таким образом ... у него нет возможностей.

но для справки:

Как мне отформатировать дату Microsoft JSON? http://blog.stevenlevithan.com/archives/date-time-format

Если вам не безразлично, то, что я закончил, добавило метод к прототипу строки javascript, чтобы мне было проще в коде:

String.prototype.dateFromJSON = function () {
    return eval(this.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"));
};

это все еще трудно использовать в смысл кода, потому что вы должны постоянно вызывать dateFromJSON () везде ... что глупо.

2
ответ дан Community 14 October 2019 в 13:48
поделиться

На самом деле есть уродливый способ, создать JavaScriptConverter для класса контейнера (Person / Article / Whatever)

Container:

public class Article
{
    public int Id { get; set; }
    public string Title { get; set; }
    public DateTime Date { get; set; }
}

Converter:

public class ArticleJavaScriptConverter : JavaScriptConverter
{
    public override IEnumerable<Type> SupportedTypes
    {
        get { return new Type[] { typeof(Article) }; }
    }

    public override object Deserialize(
        IDictionary<string, object> dictionary, 
        Type type, JavaScriptSerializer serializer)
    {
        DateTime date = 
            DateTime.ParseExact(dictionary["date"] as string, "s", null);

        return
            new Article()
            {
                Id = (int)dictionary["id"],
                Title = dictionary["title"] as string,
                Date = date
            };
    }

    public override IDictionary<string, object> Serialize(
        object obj, JavaScriptSerializer serializer)
    {
        var article = obj as Article;
        var result = new Dictionary<string,object>();

        if (article != null)
        {
            this.SerializeInternal(article, result);
        }

        return result;
    }

    private void SerializeInternal(
        Article article, IDictionary<string, object> result)
    {
        result.Add("id", article.Id);
        result.Add("title", article.Title);
        result.Add("date", article.Date.ToString("s"));
    }
}

К счастью, когда-либо ...

var serializer = new JavaScriptSerializer();

serializer.RegisterConverters(
    new JavaScriptConverter[] {
        new ArticleJavaScriptConverter() 
    });

var expected = new Article()
{
    Id = 3,
    Title = "test",
    Date = DateTime.Now
};


// {"id":3,"title":"test","date":"2009-12-02T05:12:00"}
var json = serializer.Serialize(article);

var actual = serializer.Deserialize<Article>(json);

Assert.AreEqual(expected, actual);
4
ответ дан 28 November 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: