typescript - 无法对 Deno 控制器中的原始格式有效负载执行 JSON.parse
问题描述
我正在创建一个 POST 方法 api 端点。我正在从邮递员以 RAW 格式的 JSON 字符串形式发送有效负载。然后我在我的 deno 应用控制器中执行 JSON.parse。但是 JSON.parse 之后的输出仍然是一个 JSON 字符串。
这是我的控制器代码:
import { IResponse } from '../models/response.ts'
import { IFulllName } from '../models/full-name.ts'
export const printFullName = async (
{ request, response }: { request: any, response: any }) => {
const body = await request.body();
let value = body.value;
console.log(value, '||| value');
console.log(typeof(value), '||| value type');
value = JSON.parse(JSON.stringify(value));
// This should be a JSON object but it still logs as a string
console.log(value, '||| value');
console.log(typeof(value), '||| value type');
}
如果我在没有 JSON.stringify 的情况下直接执行 JSON.parse,我会收到 500 内部服务器错误(日志中也没有错误)。
这是我尝试过的有效负载:
'{"firstName": "First", "lastName": "Last"}'
注意:我使用橡木和 Deno。
我需要的是在控制器代码中将 JSON 字符串转换为 JSON 对象。
如果有任何使用任何橡木方法的内置方法,请提出建议。
解决方案
您正在发送一个无效的 JSON 对象,在 Postman 中您应该 POST:
{"firstName": "First", "lastName": "Last"}
没有被包裹'
。
const postedJSON = `'{"firstName": "First", "lastName": "Last"}'`;
// Invalid JSON for JSON.parse, remove '
const stringified = JSON.stringify(postedJSON);
console.log(stringified); // a valid JSON string
console.log(JSON.parse(stringified) === postedJSON);
无论如何,读取 JSON 有效负载的正确方法Oak
是:
app.use(async ({ request, response }) => {
const result = await request.body();
console.log(result.value)
});
一定要寄Content-Type: application/json
推荐阅读
- asp.net-mvc - 我们可以在 ASP.NET MVC 中进行多次部署而不会丢失网站上的任何请求吗?
- google-apps-script - 保护范围不隐藏但不编辑(Google Apps 脚本)
- python - 读取两行CSV Python之间的列值
- java - 如何修复“找不到符号 MaxOf3 和 MinOf3”错误
- javascript - 使用 React 应用程序不会立即在 Safari 上加载图像
- python-3.x - 如何更新数据类python的值
- python - 类型错误位置参数自我丢失
- graph - 如何导出或检索主图表/图表中显示的 Google Adwords 数据?
- apache-kafka - KSQL 是否支持 Kafka 流处理保证?
- javascript - 如何只允许一个具有特定类的元素