当前位置: 首页 > 面试题库 >

如何从打字稿中的JSON响应中获取日期对象

郝冥夜
2023-03-14
问题内容

这是我的json:

{
  "data": [
    {
      "comment": "3541",
      "datetime": "2016-01-01"
    }
  ]
}

这是模型:

export class Job {
    constructor(comment:string, datetime:Date) {
        this.comment = comment;
        this.datetime = datetime;
    }

    comment:string;
    datetime:Date;
}

查询:

getJobs() {
        return this._http.get(jobsUrl)
            .map((response:Response) => <Job[]>response.json().data)
}

问题是强制转换为Job[]我期望datetime属性后,Date但它是字符串。它不应该转换为Date对象吗?我在这里想念什么?


问题答案:

@Gunter是绝对正确的。我唯一要添加的实际上是如何反序列化json对象,使其日期属性保持为日期而不是字符串(从引用的帖子中看到这种方法并不容易)。

这是我的尝试:

export class Helper
{
    public static Deserialize(data: string): any
    {
        return JSON.parse(data, Helper.ReviveDateTime);
    }

    private static ReviveDateTime(key: any, value: any): any 
    {
        if (typeof value === 'string')
        {
            let a = /\/Date\((\d*)\)\//.exec(value);
            if (a)
            {
                return new Date(+a[1]);
            }
        }

        return value;
    }
}

您可以在此处看到这种方法的示例:JSON.parse在dateReviver示例中的函数。

希望这可以帮助。



 类似资料:
  • 问题内容: 我有一个JSON对象,其中有一个字段是生日日期: 但是该方法在JSONObject中不存在。 如何在用户对象中设置出生日期? 问题答案: 您可能会喜欢以下内容, 希望对您有所帮助:)

  • 我得到了响应从REST API到响应对象后,通过RestAsared API调用。 响应主体是json,我想从中获取特定的键值吗? 以下是代码 如何在字符串中获取特定的键值?

  • 我有一个typescript中的枚举,它有20个字段。我有一个UI应用程序,用户可以将信息放在一些自由文本中(例如,让我们说用户喜欢的颜色)。我的要求是获取这些颜色信息并致电中层服务。midtier服务将Color定义为Enum,与UI枚举定义保持同步。我需要将用户输入文本转换为枚举(在前端),因为在构建过程中会引发编译问题。我没有找到执行转换的方法(例如,从用户输入字符串到特定枚举元素)。任何指

  • 有人可以使用BeanShell后处理程序和正则表达式提取器来实现它,或者如果有的话,还有任何其他方法来实现同样的方法。

  • 问题内容: 我想从Http get响应中获取一个对象: 这是我当前对Http get的代码: 这是convertSteamToString函数: 现在,我只是得到一个字符串对象。我如何找回JSON对象。 问题答案: 您获得的字符串只是JSON Object.toString()。这意味着您将获取JSON对象,但使用String格式。 如果应该获取JSON对象,则可以输入:

  • 我想从Http get响应中获取一个对象: 这是我当前的Http get代码: 这是转换的SteamToString函数: 现在我只是得到一个字符串对象。如何取回JSON对象。