【问题标题】:Angular2 JSON ObjectsAngular2 JSON 对象
【发布时间】:2016-09-06 08:05:01
【问题描述】:

我有一个带有 RESTful 服务的应用程序。我从服务器获得一个 JSON 对象,但我不知道该对象内部的键。是否限制为具有特定键的 JSON 对象定义一个类?如何存储从服务器获取的 JSON 对象?

【问题讨论】:

  • 如果您从服务器获取它并将其分配给已存储的变量。其实我不太明白你的问题。您能否添加一些代码来演示您尝试完成的工作?
  • 当我定义一个变量为公共数据时:json;并将我从服务器获得的对象分配给这个变量,数据未定义。我的意思是Angular2中没有json类型吗?
  • 不,打字稿有 type 。 Angular 没有类型
  • Bunyamin,您打算如何处理未知属性?如果我错了,请纠正我的意思是 keys 的对象属性/属性?使用 Json.et for .net 和 Jackson for java 将您的 json 映射到对象。
  • 一个问题听起来像stackoverflow.com/questions/22885995/…。另一个似乎是您正在访问它还没有值的值,但是如果没有看到您的代码就很难判断。

标签: javascript json rest angular


【解决方案1】:

我从服务器获取了一个 JSON 对象,但我不知道其中的键 这个对象。

使用 RESTful 服务,你应该知道数据的结构是什么。您可以使用 Postman(Chrome) 或 SOAP UI 等工具检查您获得的数据。与使用序列化的两个 Java 应用程序之间的通信(当您有两个严格类型的类时)相比,这种服务是一个更松散的想法。 你可以做这样的事情:

var d = new MyRichObject();
d.copyInto(jsonResult);

(How do I cast a JSON object to a typescript class)

我不知道里面的钥匙 这个对象

可以检查对象的键。

if ('key' in myObj)

这样您就可以确定您从服务中获得了哪些数据。

【讨论】:

  • 服务器每次都没有给我相同的结构。不同的查询可能有额外的键。
  • 您可以标准化 REST 服务或检查是否有特定的键作为响应。
  • @BünyaminSarıgül,如果您正在编写一个类来描述具有已知结构的对象,但某些字段可能不存在,并使这些字段可选。
  • 标准化的 REST 结构是您可以选择的最佳路径。
  • @JacobM 我认为这里的问题是,他无法直接访问服务器代码,因为它是第三方服务。所以他不能使用标准化的 REST 结构,如果它们没有在服务器端实现或没有/没有记录。
【解决方案2】:

我试图从异步函数中分配对象,所以它是未定义的,因为函数还没有响应。我认为它的原因是我们不能在不创建具有指定属性的类的情况下分配 JSON 对象,但我完全错了。我将对象分配给异步函数内部的一个变量,现在我可以访问其中的所有属性。

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 2017-07-27
    • 2016-07-02
    • 2018-09-23
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    相关资源
    最近更新 更多