Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Talend Open Studio将JSON写入字段_Json_Talend - Fatal编程技术网

使用Talend Open Studio将JSON写入字段

使用Talend Open Studio将JSON写入字段,json,talend,Json,Talend,我尝试将旧数据库中的数据迁移到新应用程序中 在这个过程中,我需要从旧数据库中获取数据以创建一个JSON,该JSON必须存储在新的MySQL数据库中的一个字段中 因此,我使用组件tWriteJSONField和textracjsonfields 在tWriteJSONField中,我的XML树如下所示: path |-- id [loop element] |-- name |-- description { "id": "123" } path |-- id [loop element

我尝试将旧数据库中的数据迁移到新应用程序中

在这个过程中,我需要从旧数据库中获取数据以创建一个JSON,该JSON必须存储在新的MySQL数据库中的一个字段中

因此,我使用组件
tWriteJSONField
textracjsonfields

tWriteJSONField
中,我的XML树如下所示:

path
|-- id [loop element]
|-- name
|-- description
{
   "id": "123"
}
path
|-- id [loop element] --> IdForm
|-- name              --> NomForm
|-- description       --> DescrForm
注意:我找不到如何使用
循环元素
组元素
属性。我不明白它是如何工作的,文档中也没有提到这一点

组件
tWriteJSONField
链接到
textracJSonfields
,以便从JSON中提取
id
。我需要知道JSON必须链接到每个记录

tExtractJSONFields
configuration:XPath请求

"/path"
textracjsonfields
配置:映射

-----------------------------------------------
| column        | XPath request | get nodes ? |
-----------------------------------------------
| idForm        | "id"          | false       |
-----------------------------------------------
| jsonStructure | "*"           | yes         |
-----------------------------------------------
我的问题在于
jsonStructure
通过
textracjsonfield
输出,我只得到根标记的第一个子项。在我的例子中,
jsonStructure
如下所示:

path
|-- id [loop element]
|-- name
|-- description
{
   "id": "123"
}
path
|-- id [loop element] --> IdForm
|-- name              --> NomForm
|-- description       --> DescrForm
预期结果是:

{
   "id": "123",
   "name": "Test",
   "description": "Test"
}
例如,如果我在
id
之前声明子
名称
,我将得到:

{
   "name": "Test"
}
我试图更改
jsonStructure
的XPath查询,但从未获得所有字段

为什么?

这是我关于Talend的第一个问题,如果它缺少信息,请在评论中告诉我

谢谢你的帮助

编辑:

数据从
tMysqlInput
tWriteJSONField

注意:我的通量包含更多的列,但我只向您展示用于创建JSON的列

tWriteJSONField
输出一个与输入相同列的新流量(尽管这些列在输出中都是空的,即使它们是在输入中填充的),并添加一个新的
jsonStructure
,其中包含生成的JSON

这个新的流量被一个
textracjsonfields
捕获(这个组件的配置可以在我的原始帖子中找到)

tExtractJSONFields
输出此流量:

--------------------------
| IdForm | jsonStructure |
--------------------------
| 1      | { "id": "1" } |
--------------------------
| 2      | { "id": "2" } |
--------------------------
| 3      | { "id": "3" } |
--------------------------
我希望它会返回这个:

--------------------------------------------------------------------------------------------
| IdForm | jsonStructure                                                                   |
--------------------------------------------------------------------------------------------
| 1      | { "id": "1", "name": "English training", "description": "<p>This is[...]</p>" } |
--------------------------------------------------------------------------------------------
| 2      | { "id": "2", "name": "French training", "description": "<p>[...]</p>" }         |
--------------------------------------------------------------------------------------------
| 3      | { "id": "3", "name": "How to use the [...]", "description": "<p>[...]</p>" }    |
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
|IdForm|json结构|
--------------------------------------------------------------------------------------------
||{“id”:“1”,“name”:“English training”,“description”:“这是[…]

”}| -------------------------------------------------------------------------------------------- |2{“id”:“2”,“姓名”:“法语培训”,“描述”:“[…]”

”}| -------------------------------------------------------------------------------------------- |3 |{“id”:“3”,“name”:“如何使用[…]”,“description”:“[…]”

”}| --------------------------------------------------------------------------------------------
编辑2


如果可以的话,我使用TOS 5.4.0.r110020。

您对JSONStructure列的XPath请求不正确。只需删除“*”即可获得预期结果

此外,如果json条目中不需要根节点,只需选中tWriteJsonField上的“Remove root node”,并将tExtractJSONFields中的循环XPath查询更改为“/”


哇!没有测试就很难回答这个问题。您能提供一个输出JSON和输入数据的示例吗?用伪造的数据,ofc。请耐心等待几个小时!;)谢谢你的帮助。我已经编辑了我的帖子以添加更多细节。希望足够了,谢谢。我花了很多时间在这件事上。