如何用Logstash条件判断字段是否为对象?
无需依赖已知字段的通用对象检查方法
如果你知道对象里的某个字段,可能会这么判断:
if (check_if_this_is_an_object[known_field_name]) { // 是对象 } else { // 不是对象 }
但这种方式绑定了特定字段,下面是几种通用的检查方案,适配不同编程语言:
JavaScript
- 判断纯对象:同时排除
null和数组(因为typeof []会返回object)function isPlainObject(item) { return typeof item === 'object' && item !== null && !Array.isArray(item); } - 更严格的检查:用
Object.prototype.toString确保是原生对象function isPlainObject(item) { return Object.prototype.toString.call(item) === '[object Object]'; }
Python
- 判断字典(对应JS里的纯对象):直接检查类型是否为
dictdef is_plain_object(item): return isinstance(item, dict) - 检查自定义类实例:如果是自己定义的对象,直接判断实例类型
class User: pass def is_user_object(item): return isinstance(item, User)
核心思路
不管用哪种语言,通用检查都要做到:
- 排除
null、数组这类容易被误判为对象的结构 - 优先用语言原生的类型判断API,避免自定义逻辑出错
内容的提问来源于stack exchange,提问作者Selivanov Pavel
相关产品推荐
相关产品推荐

