📜  对象 json 解析 nestjs - Javascript (1)

📅  最后修改于: 2023-12-03 14:53:40.236000             🧑  作者: Mango

对象 JSON 解析 NestJS - JavaScript

在 NestJS 中,我们通常需要将传入的 JSON 数据解析成对象,并进行相应的操作。本文将介绍如何对 JSON 数据进行解析,并转换成对象。

1. 安装依赖

在开始之前,我们需要安装 body-parser 这个依赖,它能够将传入的 JSON 数据进行解析,并转换成对象。

npm install --save @nestjs/common @nestjs/platform-express body-parser
2. 引入依赖

在 NestJS 中,我们需要在 main.ts 文件中添加如下代码:

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as bodyParser from 'body-parser';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.use(bodyParser.json());
  await app.listen(3000);
}
bootstrap();

这段代码的作用是引入依赖,并使用 body-parser 中间件进行解析。

3. 解析 JSON 数据

当我们接收到一个 JSON 数据时,我们需要将其解析成对象。在 NestJS 中,我们可以使用 @Body() 装饰器来获取请求体中的数据,例如:

import { Controller, Post, Body } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';

@Controller('users')
export class UsersController {
  @Post()
  async create(@Body() createUserDto: CreateUserDto) {
    // ...
  }
}

其中,CreateUserDto 是一个数据传输对象,用于验证传入的数据是否符合要求,可根据实际情况进行定义。

4. 数据验证

在上面的 create() 方法中,我们可以添加数据验证逻辑,例如:

import { Controller, Post, Body, HttpException, HttpStatus } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';

@Controller('users')
export class UsersController {
  @Post()
  async create(@Body() createUserDto: CreateUserDto) {
    if (!createUserDto.name) {
      throw new HttpException('Name cannot be empty.', HttpStatus.BAD_REQUEST);
    }

    if (!createUserDto.age) {
      throw new HttpException('Age cannot be empty.', HttpStatus.BAD_REQUEST);
    }

    // ...
  }
}

如果传入的数据不符合要求,则会抛出一个 HTTP 异常,返回对应的错误信息和状态码。

总结

本文介绍了如何在 NestJS 中解析 JSON 数据,并将其转换成对象。同时,还介绍了数据验证的方法,可以根据实际情况进行使用。