反序列化时将字符串转换为DateTime

时间:2019-04-03 18:52:04

标签: c# .net

我有一个像这样的json

[{"date":"2019-04-03(13:43)","storyid":"123363},{""date":"2019-04-03(09:02)","storyid":"123555"},{"date":"2019-04-03(08:44)","storyid":"664224"}]

并且我正在使用c#和.net框架将json反序列化为NewsHeadlines的列表。

JsonConvert.DeserializeObject<List<NewsHeadline>>(json);

这按预期工作,只是我想要一个特定格式(“ yyyy-MM-dd(HH:mm)”)的DateTime属性称为Date。我可以在反序列化后更改日期时间的格式,但是我很想知道是否可以在get set级别更改它。.有人可以帮助我了解如何执行此操作吗?

    [DataMember(Name = "date")]
    public DateTime Date {get;set}

    [DataMember(Name = "storyid")]
    public string StoryId {get; set;}

因此最终结果可以是值为2019-04-03(13:43)的Date(DateTime对象)

2 个答案:

答案 0 :(得分:2)

        $x = new Fieldset("Tipologia");
        $x->setHydrator(
            new DoctrineObject($em, 'Manifestazione\Entity\Tipologia', true)
            )->setObject(
                new \Manifestazione\Entity\Tipologia()
            );

        $form->add(
            [
                'type' => 'DoctrineModule\Form\Element\ObjectSelect',
                'name' => 'tipologie',
                'required' => false,
                'options' => [
                    'allow_add' => true,
                    'allow_remove' => true,
                    'object_manager' => $em,
                    'target_class'   => 'Manifestazione\Entity\Tipoevento',
                    'property'       => 'descrizione',
                    'label' => 'Tipo evento',
                    'empty_option' => ':: NONE ::',
                    'display_empty_item' => true,
                    'disable_inarray_validator' => true,
                    'target_element' => $x
                ],
                'attributes' => [
                    'id'        => 'tipologie',
                    'class'     => 'form-control',
                    'multiple' => true
                ]
            ]
            );```

答案 1 :(得分:1)

[IgnoreDataMember]
public DateTime Date { get; set; }

[DataMember(name="Date")]
private string Date_asString
{
    get
    {
        return Date.ToString("yyyy-MM-dd(HH:mm)");
    }
    set
    {
        Date = DateTime.Parse(value);
    }
 }

鉴于您正在使用和datacontract序列化程序。