Javascript Postgres JSON函数传递的是字符串而不是对象

Javascript Postgres JSON函数传递的是字符串而不是对象,javascript,json,postgresql,stored-functions,jsonb,Javascript,Json,Postgresql,Stored Functions,Jsonb,因此,我有一个Postgres函数,用于递归合并两个JSONB对象,它在生产服务器上运行良好,但在本地Postgres安装上失败。函数本身是用plv8(基本上是一个v8javascript引擎)编写的,需要合并两个JSONB格式的参数;问题是JSON是作为字符串而不是对象传入的,这实际上破坏了整个函数 这只发生在我的本地计算机上,一个新的Postgres 9.4.5安装。生产服务器运行的是9.4.4,这不应该在不同版本之间造成如此重大的变化……关于到哪里去看看这里有什么问题 编辑:现在可以确认,

因此,我有一个Postgres函数,用于递归合并两个JSONB对象,它在生产服务器上运行良好,但在本地Postgres安装上失败。函数本身是用
plv8
(基本上是一个v8javascript引擎)编写的,需要合并两个JSONB格式的参数;问题是JSON是作为字符串而不是对象传入的,这实际上破坏了整个函数

这只发生在我的本地计算机上,一个新的Postgres 9.4.5安装。生产服务器运行的是9.4.4,这不应该在不同版本之间造成如此重大的变化……关于到哪里去看看这里有什么问题


编辑:现在可以确认,恢复到9.4.4不会使其在本地表现出任何不同

很难说。可能性:

  • 不同的强制转换-您可以定义自定义强制转换-
    CREATE CAST
    语句-尝试检查
    psql
    命令
    \dC*json*

  • 9.4.5中引入的新bug


  • FWIW,升级到9.5对我来说似乎解决了这个问题。

    在本地安装9.4.4并尝试一下?您可能需要一个。您可以将函数中的字符串转换为JSON或JSONB,然后从那里开始工作吗?我们不会知道,除非你发布一些代码。这是内部代码,所以我正在等待确认我是否可以发布。。。我可以告诉您,将JSON字符串强制转换为JSON/JSONB不会影响传递到函数中的内容。不管函数本身得到什么原始字符串。从我所看到的9.4.5中没有bug;我还在
    psql
    中运行了该命令,两台服务器都提供相同的输出,所以看起来这不是问题所在?