gpt4 book ai didi

javascript - NodeJS - 解析 JSON(仅字符串或数字)

转载 作者:行者123 更新时间:2023-11-30 17:29:25 25 4
gpt4 key购买 nike

我有点不知所措(What should I do)。我在我的应用程序中有几个地方使用 AJAX 来传输 JSON 数据。因此,例如从注册表中接收数据:

try {
var data = JSON.parse(json);
}
catch(e) {
// ...
}

var fields = {
firstName: data.firstName || "",
lastName: data.lastName || "",
...
};

然后我需要对这些字段做一些事情。比方说:

if (fields.firstName) {
// OK save it to the DB
}

if(fields.lastName.xxx()) { // xxx() is a method that belongs to JS String Object
// Do something...
}

问题是如果 fields.firstNamefields.lastName{}/[] 怎么办?如果有人发送带有错误数据类型的修改后的 JSON,则可能会发生这种情况,然后整个应用程序将崩溃,因为缺少方法 xxx

我是否必须检查每个字段的类型是否真的是字符串、数字、数组...或者是否有其他更好的方法来做到这一点?

最佳答案

不幸的是,这是您在使用动态语言(如 JavaScript)时必须随时面对的问题。

一个可能的解决方案是不使用字符串方法,而是创建一个函数来首先检查它的参数:

// original, with string methods
if (text instanceof String && text.trim().length === 0) { ... }

// alternative, define function first
var isEmptyString = function(text) {
if (!(text instanceof String)) throw new Error("Argument must be a String");
return text.trim().length === 0;
}

// use it in your code
if (isEmptyString(text)) { ... }

这会导致更简洁的代码。当您必须在浏览器中使用它们时,请确保不要在全局范围内定义这些函数。在 node.js 模块中这应该不是问题。

关于javascript - NodeJS - 解析 JSON(仅字符串或数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23471165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com