当前位置: 首页 > 知识库问答 >
问题:

我如何确保我的json结构映射到我的接口?

白宏放
2023-03-14
{
    _productDepartment : null,
    _productClass : null,
    _productMaterial : null,
    _productStyle : null,
    _productDetails :
    {
        _productSkuKey : 800,
        _description : "Product Description",
        _collection : "Collection1",
        _department : 200,
        _productSize : "Size1",
        _productClass : 45,
        _productStyle : 1234,
        _material : "Product Material",
        _price : 100.00,
        _mediaFileName : "XYZ"
    },
    _products : null,
    _errorDetails :
    {
        _message : "success",
        _status : 200
    }
}
//product.ts
import { IProductDetails } from './productDetails';

export interface IProduct {

    productDepartment: string;
    productClass: string;
    productMaterial: string;
    productStyle: string;
    productDetails: IProductDetails;
    products: null;
    errorDetails: string;

}

//productDetails.ts
export interface IProductDetails {
    productSkuKey: number;
    description: string;
    collection: string;
    department: number;
    productSize: string;
    productClass: string;
    productStyle: number;
    material: string;
    price: string;
    mediaFileName: string;
}
getProducts(storeId: string, productSKU: string) {
    this.products = this.baseUrl + '/products/' + storeId + '/' + productSKU;
    return this.http.get<IProduct[]>(this.products).catch(this.errorHandler);
  }
this._transactionService.getProduct('98', '343').subscribe(data => this.products = data._productDetails);

我的问题是,这是确保我在代码中使用的对象与json响应数据匹配的正确方法吗?它如何知道将_productSkuKey与我的接口中的productSkuKey映射?

共有1个答案

孟正志
2023-03-14

接口的结构和JSON的结构必须等效,这意味着属性应该具有完全相同的名称。

因此,您必须将下划线添加到接口中,或者从服务中删除下划线。

但是,没有办法确保您的接口与来自服务的JSON匹配。通过定义接口,您可以告诉TypeScript您所期望的内容。它并不阻止您接收不同的内容,因为类型信息在编译后会消失

 类似资料:
  • 所以这就是我试过的。有更好的方法吗?

  • 问题内容: 我在Mac OS X 10.8.2上使用Go 1.0.3,并且正在尝试使用该软件包,试图将结构编组为json,但是我一直得到一个空的json对象。 该值是零,所以没有什么根据的是错误的功能,并且该结构是正确的。为什么会这样呢? 问题答案: 您必须将要封送的字段公开。像这样: 是因为所有的出口领域,在这种情况下有没有,是正确编组。 工作示例:https : //play.golang.o

  • 我正在学习一个教程,但在一个点上卡住了。我尝试在邮递员中发出一个POST请求,但返回一个我无法解决的错误。错误如下: (节点:3224)UnhandledPromiseRejectionWarning:MongooseError:操作缓冲在10000ms超时后超时。(C:\users\murad\desktop\full stack\node\node_modules\mongoose\lib\d

  • 我不想映射变量。是否有任何方法可以配置映射器,使其忽略此字段? 我知道我可以编写自定义数据映射器或使用流式API,但我想知道是否可以通过配置来实现?

  • 我想计算当前活动的resetPassword(用户架构中的子文档)代码数。要激活代码,其到期日期必须大于当前日期。 这是我的用户模式。如果有人请求重置密码,我们将把一个新的对象推送到数组中。 我在尝试对活动重置代码的总数求和时遇到问题。下面是我正在运行的查询,它返回一个空数组。。。请注意,如果要删除match节,它将返回所有代码。我试着将这个匹配语句移出初始阶段,然后进行放松 这将返回一个空数组,

  • 问题内容: 我应该把包裹放在哪里,以便可以被另一个包裹导入? 问题答案: 设置您的GOPATH。将软件包foo源放入GOPATH / src / optional-whatever / foo / *。go中,并在代码中使用 你 并不 需要显式地安装foo,那么去工具是一个构建工具,它会做自动的为你需要的时候。