如何限制json可以容纳的接收字段数



我正在Go中构建一个web服务器,该服务器接收JSON并将其发送到数据库(PostgreSQL(,然后由数据库处理并创建一些实体。我担心的是,接收到的JSON中的字段数量可能像一样巨大

{
"a":1,
"b": 2,
...
}

它可能会极大地影响数据库的性能。是否有现成的解决方案/包来解决这个问题,因为我不想编写自定义json.Unmarshaler

您可以添加这样的检查约束:

CHECK (cardinality(json_object_keys(jsoncol)) <= 30)

这将确保顶级项目不超过30个。当然,这些条目中的每一个都可能包含嵌套的、可能很大的值,但如果您的JSON看起来像问题中的那样,那就足够了。

[I]有办法或解决方案来解决这个问题吗?

是。你必须检查大小,如果太大就放弃。这可以在读取请求时完成,而解组JSON或在将数据放入之前数据库。所有变体都涉及编程。

最新更新