当前位置: 首页 > 知识库问答 >
问题:

Mulesoft Postgresql将JSON插入列时出错

丌官开宇
2023-03-14

我有一个将数据插入PostgreSQL表的Mulesoft流。数据类型为JSON。这是数据的副本:(我从调试器中抓取了这个,因为它即将调用插入命令)

[
  {
    "id": {
      "type": "MyType",
      "value": "MyValue"
    }
  }
]

当我尝试将其插入JSON列时,我得到了这个错误

"ERROR: invalid input syntax for type json
  Detail: Token "id" is invalid.
  Where: JSON data, line 1: [{id..."

所以我决定把它插入一个文本列,这就是它的样子

[{id={type=MyType, value=MyValue}}]

请注意,在“id”之后添加了“=”而不是“:”,并删除了引号。

我不知道为什么会这样。基本上,我只需要将JSON数据插入JSON列。

谢谢

共有1个答案

丁阳炎
2023-03-14

Mule认为JSON可能与Postgresql对JSON字段的期望不匹配。你需要做一些转换。

您在文本字段中看到的只是DataWeave(Mule 4的表达式语言)在内部使用的对象的序列化。如果在应用程序中使用记录器,则会看到相同的结果。DataWeave不在内部存储JSON或XML对象。它将JSON或XML输入读入内部表示(在Java中),转换并以JSON、XML或其他支持的格式写入。

在以JSON格式输出字符串的情况下,可以使用DataWeave函数write()输出到Java:

#[ output application/java --- write(vars.jsonData, "application/json") ]

然后调整SQL查询,将输入从字符串转换为Postgresql使用Postgresql的SQL函数to_json()使用的JSON类型。这在另一个问题中解释:https://stackoverflow.com/a/35847081/721855

 类似资料:
  • 我正在将CSV文件插入MongoDB。首先,我将CSV转换为Json格式的数组(参考:https://dzone.com/articles/how-to-convert-csv-to-json-in-java)然后尝试将其上载到MongoDB,但遇到以下错误(只有当CurrentBSONType为DOCUMENT时,才能调用readStartDocument,而当CurrentBSONType为A

  • 我试图插入一个json字符串,它包含一个文档数组,但得到以下异常。 MongoDB服务器版本: Mongo-Java驱动程序版本: 我知道方法只用于插入一个文档,但这里是一个数组文档。我不确定在这里如何使用方法。 请引导。 要插入的JSON字符串: 异常日志: main.java GenericUtils.java pom.xml

  • 我从API中得到了一个字符串列表,当我尝试插入Room Db时,我得到了一个错误- 参数的 这是它的桌子 我如何解决这个错误,或者有没有其他的方法让这个东西工作。

  • 问题内容: 我正在尝试将文档插入Node.js中的MongoDB中。我已经从数据库中成功读取了文件,并通过命令行界面添加了文档。但是,我无法从JavaScript插入文档。如果这样做,我会收到一个错误: 错误:没有提供的回调无法使用writeConcern 这是我的代码: 我无法终生弄清楚为什么会出现此错误。 我做错了什么,我应该怎么做呢? 问题答案: 您需要为调用提供回调函数,以便该方法可以将插

  • 我忙于一项学校作业,我有一个由三个表组成的基本access数据库。Book、Reader和BookRated,其中as BookRated是交集表,主键userName来自Reader和ISBN来自Book组成BookRated的复合主键(作为外键)。 我正试图将信息插入书签表中,但出现以下错误

  • 问题内容: 我需要转换从REST API获得的JSON数据,并将其转换为CSV以便进行分析。问题在于JSON数据不一定遵循相同的内容,因此我无法定义映射类型。这已经成为一项挑战,占用了我太多时间。我已经创建了一些代码,但是由于它在此行上引发了异常,因此它当然不起作用 错误是: 附加信息:无法将当前JSON对象(例如{“ name”:“ value”})反序列化为类型’System.Collecti