gpt4 book ai didi

mysql - 使用 Mule ESB 在 mysql 数据库中插入 json 对象

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

晚上好!

我正在尝试将整个 json 对象插入到 mysql 表中。我正在使用 json to object transformer 将 json 转换为 HashMap。 Json是这样的:

    {
"content": {
"fill": "none",
"stroke": "#fff",
"path": [
["M", 422, 115],
["L", 472, 167.5]
],
"stroke-width": 4,
"stroke-linecap": "round",
"stroke-linejoin": "round",
"transform": [],
"type": "path",
"note": {
"id": 47,
"page":0,
"ref": 3,
"txt": "teste do serviço",
"addedAt": 1418133743604,
"addedBy": "valter.gomes"
}
}
}

我需要插入“content”对象,但是当我尝试通过#[payload.content] 访问它时,抛出异常:

Root Exception stack trace:
java.sql.SQLException: Incorrect string value: '\xAC\xED\x00\x05sr...' for column 'content' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)

我们找到了我认为的解决方法。在转换为 HashMap 之前,我将“内容”对象放入变量 #[json:content] 并将其记录在 DB #[flowVars.rawContent] 中。当我从数据库中检索它时,我使用对象到字符串转换器将 ResultSet 转换为字符串。

但是,我对这个解决方案不太满意。这是这样做的正确方法吗?还是存在其他的?也许是正确的。

非常感谢您的帮助。

最佳答案

当您收到 json 时,您可以转换为 Map 类(默认情况下 json:json-to-object-transformer 返回 JsonData)。出于这个原因,我指定了 Map 类。因此,之后您可以使用 #[payload.content]

从有效载荷中读取内容

我附上了我的流程:

<flow name="demoFlow1" doc:name="demoFlow1">     
<http:inbound-endpoint exchange-pattern="request-response"
host="localhost" port="8081" path="demo" doc:name="HTTP" />
<scripting:component doc:name="Groovy">
<scripting:script engine="Groovy"><![CDATA[
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("fill","none");
map1.put("stroke","#fff");
Map<String, Object> map = new HashMap<String, Object>();
map.put("content", map1);
return map;]]></scripting:script>
</scripting:component>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<logger level="INFO" message=">>1 #[payload]" doc:name="Logger" />
<json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
<set-payload value="#[payload.content]" doc:name="Set Payload"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<logger level="INFO" message=">>3 #[payload]" doc:name="Logger" />
</flow>

关于mysql - 使用 Mule ESB 在 mysql 数据库中插入 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28444516/

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